苹果在 10.6 中添加了+[NSPropertyListSerialization dataWithPropertyList:format:options:error:]
并标记较旧的+[NSPropertyListSerialization dataFromPropertyList:format:errorDescription:]
已过时且很快将被弃用。在 10.6 及更高版本上使用较新的调用并仍然在早期操作系统版本上运行的一种方法是这样的:
if ([NSPropertyListSerialization respondsToSelector:@selector(dataWithPropertyList:format:options:error:)]) {
data = [NSPropertyListSerialization dataWithPropertyList:dict
format:NSPropertyListXMLFormat_v1_0
options:0
error:&err];
} else {
data = [NSPropertyListSerialization dataFromPropertyList:dict
format:NSPropertyListXMLFormat_v1_0
errorDescription:&errorDescription];
}
针对 10.4 SDK 构建(为了与该版本兼容),这会导致:warning: 'NSPropertyListSerialization' may not respond to '+dataWithPropertyList:format:options:error:'
而且,更糟糕的是,由于编译器不知道这个选择器,它可能会错误地传递参数。
NSIncation 是调用新 API(就 SDK 而言尚不存在)的已批准/最佳方式吗?
IIRC,您想要使用 10.6 SDK 并将部署目标 (MACOSX_DEPLOYMENT_TARGET) 设置为 10.4,因此 10.5/10.6 符号是弱链接的。然后您可以使用respondsToSelector:
的东西并且没有收到警告。
当然,请确保您正在检查对象是否可以响应选择器,否则您将在 10.4/10.5 上崩溃。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)