Bir uygulamayı (Clarke) 10.6 uyumluluk sağlamak için yükseltmeye çalışıyorum.Yeni bir API mevcut olduğunda, geriye dönük uyumlu bir OS X uygulaması oluşturma?
Planım, kullanımda olan OSX sürümüne bağlı olarak iki farklı kod yolu kullanmaktır.
10.5'te, herhangi bir belirli Kakao API'sine bağımlı olmayan tamamen özel koddan oluşan bir denetleyici kullanacaktır. 10.6'da yeni CoreLocation API'sini, aynı soyut sınıfa dayanan, aynı arayüzde saran başka bir kontrolör kullanacaktır. Çalışma zamanında, uygulama işletim sistemi sürümünü algılayarak kontrolörler arasında geçiş yapar.
Bu 10.6 SDK için inşa 10.6 üzerinde çalışıyor, ancak aynı yapı ile 10.5 üzerinde patlarsa: Ben 10.5 SDK için derlerseniz
10/09/2009 18:30:50 [0x0-0x12f12f].uk.co.tomtaylor.Clarke[4575] dyld: unknown required load command 0x80000022
10/09/2009 18:30:51 com.apple.launchd[403] ([0x0-0x12f12f].uk.co.tomtaylor.Clarke[4575]) Exited abnormally: Trace/BPT trap
belli ki, CoreLocation şeyler derleme olamaz.
Bu uygulama için tek bir ikili sunmayı umuyordum. CoreLocation API'sini 10.5'ten 'gizlemek için bir yol var mı?
Bu doğru yöntemdir ancak daha fazlası var: 10,6 değil 10.5 olan API'leri çağırmanız gerektiğinde, NSClassFromString() kullanarak sınıf adını almanız gerekir. Daha sonra, iade edilen sınıf adının geçerli olup olmadığını kontrol edin. Geçerliyse, devam edip ihtiyaç duyduğunuz API'ları arayabilirsiniz. Aksi takdirde, incelikle başarısız olmanız gerekir. – Jasarien