gpt4 book ai didi

iphone - 保持向后兼容 iPhone OS 2.2.1

转载 作者:行者123 更新时间:2023-12-03 20:38:21 25 4
gpt4 key购买 nike

我目前在 App Store 上有一个使用版本 2.2.1 构建的应用程序,即基础 SDK 和部署目标均设置为 2.2.1。该应用程序运行良好。从那时起,我已将 XCode 版本升级到 3.1.3,并且正在更新我的应用程序,将 Base SDK 设置为 3.0,将部署目标设置为 2.2.1。这在我的测试 iPhone 设备上运行良好,该设备运行 OS 3.0。问题是我没有可以在 2.2.1 上测试的设备,因此我使用模拟器,并且某些 UI 元素在我当前的版本中不会显示(主要是图像)。奇怪的是,当我在模拟器上使用当前版本的 XCode 测试 App Store 上已有的应用程序的旧版本时,我遇到了同样消失的 UI 问题。同样的构建怎么会产生不同的结果呢? XCode 有什么变化吗?这是怎么回事?

谢谢!

最佳答案

2.2.1 应用程序无法在 iPhone 模拟器上运行:应用程序运行时,从“硬件”>“版本”菜单检查模拟器的硬件版本。尽管问题不完全相同,但仍报告了有关自动选择正确模拟器版本的问题。 See question#388298a related article (see Open Questions) 。如果未设置为 2.2.1,唯一的选择可能是手动设置并在不使用调试器的情况下启动应用程序。

总体上支持向后兼容性:Here关于这样做的一篇很好的文章。您应该在运行时检查版本,而不是编译时,因为后者会从二进制文件中遗漏向后兼容的代码。另外,不要忘记弱链接任何仅限 3.0 的框架,例如 MapKit 和 GameKit。 The article above展示了如何做到这一点。

注意:您可以使用 respondsToSelector: 检查是否已弃用的属性。这有点麻烦,但是获取和设置属性只是一个语法糖,所以:

cell.image;
cell.image = anImage;
// corresponds to
if ([cell respondsToSelector:@selector(image)]) {
[cell image];
[cell setImage:anImage];
}

此外,为每个不同版本保留不同的目标可能会有所帮助,以便您可以轻松地在它们之间切换。

关于iphone - 保持向后兼容 iPhone OS 2.2.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com