好吧,我开发 iPhone 应用程序已经一年多了,
但有一件事仍然很糟糕。
假设我想让我的应用程序与 iOS 3.0 兼容
我将 sdk 设置为可用的最新版本,并将部署目标设置为 3.0
但是,如果您不小心调用了仅在 ... 3.1.x 或更高版本中可用的函数,会发生什么情况?
是的,它只是崩溃了。
没有任何警告或指示告诉您某个功能仅在更高版本的 iOS 版本中可用。由于模拟器不支持 4.0 以下的版本,因此无法测试应用程序是否真正有效。你甚至不能购买新设备,因为他们已经安装了较新的 iOS。
即使您拥有较旧的设备,有时也几乎不可能检查代码的每个部分。
而且我确实需要支持旧版本,因为我知道我的客户(大约 2/3)仍然使用 3.x 版本。
是否没有任何代码分析器或扫描应用程序内调用的所有函数的可用性的东西?
在一种情况下,应用程序崩溃了,因为我打电话
+ (id)sortDescriptorWithKey:(NSString *)key ascending:(BOOL)ascending
这是 alloc + 的一种便捷方法
- (id)initWithKey:(NSString *)key ascending:(BOOL)ascending;
(而且它是自动发布的)
但是sortDescriptorWithKey仅在4.0中可用@_@
同样的问题在这里。我唯一想到的就是设置Base SDK
项目和目标为 3.0。然后编译器会检查你是否调用了一些不存在的方法。
但是扫描仪的问题仍然存在,因为上面的方法在使用 ASI HTTP 框架时引发了一些错误。所以我的程序是
- 将 SDK 更改为 3.0
- 解决我自己的代码中的错误
- 更改方法以兼容 3.0
- 设置项目的
Base SDK
回到
最新的SDK
您可能必须安装以前 XCode 版本的 SDK 3.0。并且无需设定目标Base SDK
回到最新版本。我曾经将其设置为 3.0,并且没有从 ASI HTTP 中得到任何错误。
//编辑:XCode 3.2.1 的下载链接:雪豹 http://developer.apple.com/ios/download.action?path=/iphone/iphone_sdk_3.1.3__final/iphone_sdk_3.1.3_with_xcode_3.2.1__snow_leopard__10m2003a.dmg and Leopard http://developer.apple.com/ios/download.action?path=/iphone/iphone_sdk_3.1.3__final/iphone_sdk_3.1.3_with_xcode_3.1.4__leopard__9m2809a.dmg
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)