我想在我的2.0应用程序中使用iPhone OS 3.0的某些功能,当它在3.0设备上运行时。我不想一直使用3.0,因为有些客户还不想更新。
我尝试了MapKit.framework(-weak_framework MapKit)的弱连接。我发现它非常麻烦,因为我不得不欺骗编译器/链接器使用2.0 SDK以及除使用MapKit的代码之外的所有代码。
有没有人有这方面的经验?你在做什么来编译/链接。有没有人已经向Apple提交了一个应用程序,该应用程序弱化了其他操作系统版本的框架?
答案 0 :(得分:36)
Apple有一个如何做到这一点的例子,特别是制作一个使用MFMailComposeViewController的兼容2.x的应用....
http://developer.apple.com/iphone/library/samplecode/MailComposer/index.html
答案涉及使用3.0 SDK进行编译,将部署目标设置为2.x,确保3.0框架被标记为“弱”引用,然后做正确的事情以使代码工作如果您正在使用没有新框架的设备。
答案 1 :(得分:5)
您始终可以使用dlopen函数链接到不属于当前SDK的框架。当然,不推荐用于非公开的框架(在这种情况下,不推荐在应用商店中禁止==禁止)。但是,随着未发布的操作系统版本中的新框架公开,它是一种选择。只需检查您的版本号,并打开可用的框架。对于个人功能很有用,如果你大量使用新东西,那就不那么重要了。
答案 2 :(得分:1)
这可能不是您正在寻找的答案,但我使用的方法是只有两个单独的应用程序。我只是将其作为新应用程序发布,而不是使用3.0升级更新现有应用程序。老用户可以根据需要使用2.0应用程序,而想要3.0功能的用户可以升级。
答案 3 :(得分:0)
这里有关于弱链接(包括库和框架)的精彩方法:
虽然它有点过时了...使用最新的x代码,弱链接整个框架的过程实际上更容易:
答案 4 :(得分:-1)
我认为你不能。 3.0和2.x使用完全不同的SDK,并链接到完全不同的文件和库集。我不确定,但我不认为你可以链接到3.0 SDK并且仍然是2.X兼容。
(如果我错了,请添加评论)。