【问题标题】:Can a 4th generation iPod touch run an app developed using the iOS 7 SDK?第 4 代 iPod touch 可以运行使用 iOS 7 SDK 开发的应用程序吗?
【发布时间】:2014-01-22 10:31:32
【问题描述】:

在我最近的一个问题 (https://apple.stackexchange.com/q/116029/7742) 之后,这里有一些信息:

我的应用是使用 Xcode 5、iOS SDK 7 开发的。部署目标是 4.3。

有人告诉我第四代 iPod touch 不能运行 iOS 7。

既然我的应用程序的部署目标是 4.3,那么它应该可以在那个 iPod 上运行,对吧?或者我使用 SDK 7 的事实是否意味着它无法工作?

【问题讨论】:

    标签: ios iphone ipod-touch


    【解决方案1】:

    第四代 iPod Touch 不支持 iOS 7。请参阅这篇 Wikipedia 文章。

    您可以使用 Xcode 5 构建部署目标为 4.3 的应用程序,但这意味着您不能使用仅受 iOS > 4.3 版本支持的任何 iOS 功能。而且您必须非常小心地检查您是否没有这样做,否则应用程序将崩溃。

    而且...不幸的是,没有发出警告的 Profiler 或预处理器...尽管您可以仔细检查 Xcode “Analyze”是否警告您。否则,您只需非常仔细地检查您的所有代码是否符合 4.3 SDK 的限制或进行大量测试......实际上两者都做。

    【讨论】:

    • 如果我使用的是 iOS 4.3 不支持的功能,那么 Xcode 会告诉我对吗?
    • @Omega:很遗憾没有。 Xcode 不会检查您的代码是否仅使用所选部署目标中可用的方法。 (不要问我为什么,我试图在 WWDC 上与 Apple 开发人员讨论这个问题,但无济于事。) - 我看到了一个通过重新定义可用性宏来实现此检查的解决方案,但我不确定是否我会再找的。​​span>
    • 不...见上面我修改后的答案
    • @Omega:这就是我的意思:stackoverflow.com/a/8993138/1187415。但我不知道这是否仍然适用于 Xcode 5 和当前的 iOS 版本。
    • 不知道。在接触 Apple 的任何来源时,我总是很谨慎......但我想你可以暂时这样做只是为了检查一下。
    【解决方案2】:

    部署目标意味着应该在运行该部署目标 iOS 版本(或更高版本)的设备上工作。 (因此,如果您的部署目标是 4.3 并且设备运行的是 4.3 或更高版本的 iOS,那么您应该没问题。)您使用 Xcode 5 和 iOS 7 SDK 的事实不会影响这一点。唯一的限制是我们不能使用最新的编译器为 4.3 之前的 iOS 版本和/或第一代或第二代硬件构建。

    显然,这假设您没有意外引用任何需要更高版本 iOS 的类或方法(或者,如果您决定利用新功能,则进行运行时检查以仅在它们可用)。尝试在 iOS 6.0 模拟器上运行您的应用程序以确认与 iOS 6 的兼容性。(注意,Xcode 5 不再包含 iOS 6.0 之前的模拟器,所以如果您真的想针对早期版本进行测试,例如 iOS 5.0 或 4.3,您可能只是想使用旧 iOS 版本的旧设备。)

    我提到购买旧设备,因为与旧 iOS 版本的兼容性还不够。您希望确保您的应用程序可以在该硬件上运行(例如,不需要超过第 4 代 256mb 的内存、蜂窝网络等)。您确实应该使用旧 iOS 版本的物理硬件来测试您的应用。

    【讨论】:

    • 但是在较旧的 iOS 版本上进行测试变得越来越困难。 Mavericks 上的 Xcode 甚至不支持 iOS 5 模拟器。
    • @MartinR 同意,但他说的是第 4 代(支持 iOS 6),这就是为什么建议至少在模拟器上进行测试的原因。但就您关于丢失 4.x 和 5.x 模拟器的观点而言,这就是我保留旧硬件的原因,因为当我真的想在那些旧 iOS 版本上测试某些东西时。
    猜你喜欢
    • 2011-08-23
    • 2012-10-23
    • 2011-11-14
    • 2012-12-01
    • 2012-09-29
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2015-08-07
    相关资源
    最近更新 更多