簡體   English   中英

iOS3設備上的iOS4代碼

[英]iOS4 code on iOS3 devices

是否可以在應用程序中使用iOS4特定代碼(即MKMapView覆蓋),使用4.0構建,將部署目標設置為3.0,並且只要未在3.x設備上調用iOS4代碼,它仍然可以工作?

我現在正嘗試這樣做,並且只在設備支持的情況下調用iOS4代碼,但我無法安裝它。 GDB嚇壞了。 這是我為iOS3設備構建時得到的結果:

dyld: Symbol not found: _OBJC_CLASS_$_MKOverlayView
Referenced from: /var/mobile/Applications/1EE8EC13-FA01-43CB-A617-9B5D268ECD13/maps.app/maps
Expected in: /System/Library/Frameworks/MapKit.framework/MapKit

Data Formatters temporarily unavailable, will re-try after a 'continue'. (Not safe to call dlopen at this time.)
mi_cmd_stack_list_frames: Not enough frames in stack.
mi_cmd_stack_list_frames: Not enough frames in stack.

我希望這個應用程序在3.0及更高版本上運行,並在4.0設備上使用新的MKMapView覆蓋。

具體地講,我實現在WWDC證明平鋪圖像覆蓋的代碼,它使用自定義TileOverlay實現該MKOverlay協議,和一個自定義TileOverlayView這是一個子類MKOverlayView

您需要使用Base SDK設置為4.0並將Deployment Target設置為3.0來構建。

然后,當嘗試使用僅存在於4.0中的類時,請使用NSClassFromString(“MKOverlayView”)或其調用的任何內容。 如果該類不存在,那將返回nil。

來自Matt Gallagher的這篇文章提供了有關此類情況的更詳細提示:

http://cocoawithlove.com/2010/07/tips-tricks-for-conditional-ios3-ios32.html

嘗試弱鏈接MapKit框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM