【问题标题】:iPhone SDK 2.2.1 based app should be launched on iPhone 3.0 OS device基于 iPhone SDK 2.2.1 的应用程序应在 iPhone 3.0 OS 设备上启动
【发布时间】:2009-07-08 18:59:28
【问题描述】:

我的应用是在 3.0 beta 出现之前使用 SDK 2.2.1 版本构建的。

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

例如 Apple doc tell:
修复:如果 barStyle 更改为 UIBarStyleBlackTranslucent 或从 UIBarStyleBlackTranslucent 更改,UINavigationController 不会自动调整内容视图的大小。

但是我的应用程序使用了这种风格,而且我之前看到内容视图在 iPhone 2.2.1 操作系统中调整大小...


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

谢谢。

【问题讨论】:

    标签: iphone


    【解决方案1】:

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

    对于您引用的特定修复,可能是内容在某些情况下未能调整大小,而这从一开始就不会影响您。但总而言之,在您尝试之前,您不会确切知道您的应用在 3.0 下的行为。

    【讨论】:

      【解决方案2】:

      在 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 测试(也有一段时间未测试)的应用程序进入 App Store。

      【讨论】:

      • 感谢您的及时答复。只有一条评论...如果我将使用 3.0 标头(Active SDK)构建我的应用程序,我的应用程序将不再适用于 2.2.1 用户。正确的? ...所以我必须仔细学习 Apple 文档,但如果我希望对 2.2.1 和 3.0 都可用,请自行承担 2.2.1 的风险。
      • 正确 - 根据 3.0 标头构建的应用程序无法在 2.2.1 设备上使用(或者如果是,您必须非常小心使用的代码,甚至更多所以不是 2.2.1->3.0 部署)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多