iOS SDK正在升级,并且会出现一些新技术,即块是新技术。关于iOS目标版本和SDK版本
所以问题是如果基于“块”的实现也可以分发到较低的目标版本或更旧的iPhone(3G或第一代)?
如何应对这些问题?
iOS SDK正在升级,并且会出现一些新技术,即块是新技术。关于iOS目标版本和SDK版本
所以问题是如果基于“块”的实现也可以分发到较低的目标版本或更旧的iPhone(3G或第一代)?
如何应对这些问题?
处理这类问题的常用方法是在运行时根据当前操作系统版本有选择地启用功能。但是,这可能非常复杂。
例如新功能:
Class optionalClass = NSClassFromString(@"NSArtificialIntelligence");
if (optionalClass) {
id optionalObj = [[optionalClass alloc] init];
// ...
}
以下文档离子详细描述了该过程:
您明确提到的块。此功能需要编译器和Objective-C运行时的支持,因此在旧系统上根本不可用。
如果您在iOS4或更高版本中使用块,则必须链接到libSystem.B.dylib。由于块能够使用最新的iOS SDK编译,但iOS2,3.0和3.1没有块运行时。
(另外,你可以使用块iPhone 2.2+,请看看plblocks)
谢谢您的回答。块只是一个例子。开发人员希望使用最新的技术,但该应用程序希望为最低的SDK安装,尽可能多的设备。是的,这是冲突的。要更深入地了解,处理此类问题的任何良好做法?再次感谢 – Forrest 2011-04-25 08:19:01