在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'可能无法响应'+dataWithPropertyList:format:options:error:'
更糟糕的是,由于编译器不知道此选择器,它可能会错误地传递参数。
在SDK尚不存在的情况下,NSInvocation是否是调用新API的批准/最佳方法?