如何编写在OS 2.0上运行的iPhone(Objective C ++)程序,但如果它们可用,则可以利用3.0功能?
示例:复制和粘贴(类UIPasteboard)。很好的功能,但我不想杀死向后兼容性。我是针对SDK v.3还是v.2编译的?如果是后者,我怎么创建一个UIPasteboard实例,考虑到它没有在头文件中声明?如果是前者,在OS 2.0下加载时,某些C-linkage函数是否会导致“未解析的引用”?
答案 0 :(得分:1)
像这样编辑目标的构建设置:
构建时,可以针对Base SDK进行编译。对于在Base SDK中定义但在部署目标中不可用的所有符号,您需要在代码中添加运行时检查以检查其可用性。例子:
检查UIPasteboard是否可用:
Class PasteboardClass = NSClassFromString(@"UIPasteboard");
if (PasteboardClass != nil) {
// UIPasteboard is available
}
检查特定方法是否可用:
if ([UITableViewCell respondsToSelector:@selector(initWithStyle:reuseIdentifier:)]) {
// ...
}
答案 1 :(得分:0)
我没有尝试这个,但我建议建立最新的(3.x)SDK版本。因此,您可以获得可能在目标设备上可用的任何类和方法定义。
在您的应用程序中,您必须检查运行的应用程序的操作系统版本。根据目标操作系统,您必须决定应使用哪个类和方法。毕竟它是一大堆条件代码,可能有很多额外的代码来提供缺少的功能(即直接访问SQLite而不是使用Core-Data)。根据我的经验,不应该导致问题,因为大多数类型信息在运行时被删除。