关于iOS目标版本和SDK版本

时间:2011-04-25 07:42:01

标签: objective-c ios objective-c-blocks

iOS SDK正在升级,并且会出现一些新的技术,即阻止是新技术。

所以问题是,基于“块”的实现是否也可以分发到较低目标版本或较旧的iPhone(3G或第一代)?

如何应对这些问题?

2 个答案:

答案 0 :(得分:0)

处理此类问题的常用方法是根据当前操作系统版本在运行时有选择地启用功能。但是,管理起来可能非常复杂。

  • 在运行时查询当前操作系统版本
  • 使用弱链接
  • 动态创建班级
  • 仅在新班级存在时调用新功能

例如:

Class optionalClass = NSClassFromString(@"NSArtificialIntelligence");
if (optionalClass) {
  id optionalObj = [[optionalClass alloc] init];
  // ... 
}

以下文档详细介绍了该过程:

你特别提到了块。此功能需要编译器和Objective-C运行时的支持,因此在旧系统上根本不可用。

答案 1 :(得分:0)

如果您使用的是iOS4或更高版本的块,则必须弱连接到libSystem.B.dylib。因为块能够使用最新的iOS SDK进行编译,但iOS2,3.0和3.1没有块运行时。

(此外,您可以使用iPhone 2.2+版块。请查看plblocks。)