我已经开发 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 @_@