基于iPhone SDK 2.2.1的应用程序应该在iPhone 3.0 OS设备上启动

时间:2009-07-08 18:59:29

标签: iphone

即使在3.0测试版出现之前,我的应用程序也是使用SDK 2.2.1版本构建的。

用户将我的应用程序安装到3.0 FW版本的最新iPhone 3Gs。我的应用程序与上一代iPhone有不同的表现吗?描述here (3.0 OS Release Notes)的项目是否会影响我使用2.2.1 SDK构建的应用程序?

例如Apple doc告诉:
FIXED:如果barStyle更改为/来自UIBarStyleBlackTranslucent,则UINavigationController不会自动调整内容视图的大小。

但我的应用程序使用这种风格,我看到之前使用iPhone 2.2.1操作系统重新调整内容视图......


当我在项目和构建的XCode中选择2.2.1或3.0 SDK作为活动时,它在技术上意味着什么? SDK是否对应静态链接的库?

谢谢。

2 个答案:

答案 0 :(得分:1)

当您在XCode中选择一个活动的SDK时,它基本上会选择要编译的头。这些库是动态链接的,因此当您在运行3.0的设备上运行针对2.2.1构建的应用程序时,它将具有3.0库行为。

对于您引用的具体修复,可能是内容在某些从未影响您的情况下无法调整大小。但长期和短期的是,在你尝试之前,你不会确切地知道你的应用程序在3.0之下的行为。

答案 1 :(得分:1)

在Xcode中选择一个活动的SDK告诉编译器要构建哪个版本的Apple库和框架。如果您使用的是Apple更改过的代码或在2.2.1和3.0之间标记了错误修正,那么您可以在应用中看到不同的行为。

例如,在iPhone OS 2.2.1和3.0之间,Apple弃用了UITableViewCell initWithFrame:初始化方法。在2.2.1中,使用此初始化程序创建表格单元格的代码运行良好。它们仍然可以在3.0中运行,但是您将收到来自Xcode的弃用警告,您应该更新您的代码,因为Apple可能随时删除已弃用的框架部分。

其他变化更具行为性,就像你提到的那样。如果您的应用程序在更改条形样式时依赖于内容视图调整大小,并且调整大小不再发生,则应用程序中可能会出现意外情况。

最好的方法是在3.0中构建您的应用并彻底测试它。完成编译器警告并根据需要更新代码,然后查看Apple所做的其他更改以及在代码中使用这些位的位置。

旁注:根据我的理解,Apple不再接受未在3.0上测试的应用程序中的应用程序(也没有在一段时间内进行过测试)。