【问题标题】:iOS4 code on iOS3 devicesiOS3 设备上的 iOS4 代码
【发布时间】:2010-07-19 19:26:22
【问题描述】:

是否可以在应用程序中包含 iOS4 特定代码(即 MKMapView 覆盖),使用 4.0 构建,将部署目标设置为 3.0,并且只要不在 3 上调用 iOS4 代码,它仍然可以工作.x 设备?

我现在正在尝试这样做,并且仅在设备支持时才调用 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 上演示的平铺图像叠加代码,它使用实现 MKOverlay 协议的自定义 TileOverlay,以及作为 MKOverlayView 子类的自定义 TileOverlayView

【问题讨论】:

    标签: iphone ios4 mkmapview


    【解决方案1】:

    您需要使用设置为 4.0 的 Base SDK 和设置为 3.0 的部署目标进行构建。

    然后,当尝试使用仅存在于 4.0 中的类时,请使用 NSClassFromString("MKOverlayView") 或其他任何名称。如果类不存在,则返回 nil。

    Matt Gallagher 的这篇文章对这种情况有更详细的提示:

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

    【讨论】:

      【解决方案2】:

      尝试弱链接 MapKit 框架。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多