如何在2.0兼容的应用程序中选择使用iPhone OS 3.0功能?

Nik*_*uhe 42 iphone iphone-sdk-3.0

我想在我的2.0应用程序中使用iPhone OS 3.0的一些功能,当它在3.0设备上运行时.我不想一直使用3.0,因为有些客户还不想更新.

我尝试了MapKit.framework(-weak_framework MapKit)的弱连接.我发现它非常麻烦,因为我不得不欺骗编译器/链接器使用2.0 SDK以及除使用MapKit的代码之外的所有代码.

有没有人有这方面的经验?你在做什么来编译/链接.有没有人已经向Apple提交了一个应用程序,该应用程序弱化了其他操作系统版本的框架?

Dav*_*des 36

Apple有一个如何做到这一点的例子,特别是制作一个使用MFMailComposeViewController的2.x兼容的应用....

http://developer.apple.com/iphone/library/samplecode/MailComposer/index.html

答案涉及使用3.0 SDK进行编译,将部署目标设置为2.x,确保将3.0框架标记为"弱"引用,然后做正确的事情以使代码工作,如果您在某个设备上新的框架不存在.

  • 始终使用可用的最新稳定SDK,将部署目标设置为您要支持的最低版本.然后编写条件运行时代码:检查是否存在类if(NSClassFromString(@"NSSomeNewClass")){...}检查是否存在方法if([NSSomeClass instancesRespondToSelector(someSelector :)]){... } (3认同)

Ben*_*ieb 5

您始终可以使用dlopen函数链接到不属于当前SDK的框架.当然,不推荐用于非公开的框架(在这种情况下,不推荐在应用商店中禁止==禁止).但是,随着未发布的操作系统版本中的新框架公开,它是一种选择.只需检查您的版本号,并打开可用的框架.对于个人功能很有用,如果你大量使用新东西的话,那就不那么了