代码之家  ›  专栏  ›  技术社区  ›  dc.

IOS3设备上的IOS4代码

  •  4
  • dc.  · 技术社区  · 14 年前

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

    我现在正在尝试这样做,并且只在设备支持的情况下调用ios4代码,但是我无法安装它。广发银行很紧张。以下是我为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 .

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jesse Naugher    14 年前

    尝试弱链接mapkit框架。

        2
  •  2
  •   Matt Moriarity    14 年前

    您需要在基本SDK设置为4.0,部署目标设置为3.0的情况下进行构建。

    然后,当尝试使用只存在于4.0中的类时,请使用nsclasfromstring(“mkoverlayview”)或它调用的任何内容。如果类不存在,则返回零。

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

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