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

时间:2009-06-12 13:16:46

标签: 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提交了一个应用程序,该应用程序弱化了其他操作系统版本的框架?

5 个答案:

答案 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)

这里有关于弱链接(包括库和框架)的精彩方法:

http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html#//apple_ref/doc/uid/20002378-107262

虽然它有点过时了...使用最新的x代码,弱链接整个框架的过程实际上更容易:

  1. 右键单击目标并选择“获取信息”
  2. 转到“常规”标签
  3. 在底部的链接库部分中,对于您想要弱连接的所有库,将Type从required更改为weak。
  4. 利润

答案 4 :(得分:-1)

我认为你不能。 3.0和2.x使用完全不同的SDK,并链接到完全不同的文件和库集。我不确定,但我不认为你可以链接到3.0 SDK并且仍然是2.X兼容。

(如果我错了,请添加评论)。