objective-c – 如何有条件地使用新的Cocoa API

objective-c – 如何有条件地使用新的Cocoa API,第1张

概述在10.6中,Apple添加了[NSPropertyListSerialization dataWithPropertyList:format:options:error:],并将旧的[NSPropertyListSerialization dataFromPropertyList:format:errorDescription:]标记为过时,很快就会被弃用.在10.6及更高版本上使用较新的调用, 在10.6中,Apple添加了[nspropertyListSerialization dataWithPropertyList:format:options:error:],并将旧的[nspropertyListSerialization dataFromPropertyList:format:errorDescription:]标记为过时,很快就会被弃用.在10.6及更高版本上使用较新的调用,并且仍然在早期的OS版本上运行的一种方法是这样的:

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构建(为了与该版本兼容),这会导致:警告:’nspropertyListSerialization’可能无法响应’dataWithPropertyList:format:options:error:’更糟糕的是,因为编译器不知道这个选择器,它可能会错误地传递参数.

NSInvocation是调用新API的已批准/最佳方式,就SDK而言,它还不存在吗?

解决方法 另一种做法是将自己的遗漏方法声明为相关类的一个类别.这将使编译器停止抱怨没有找到方法,但当然你仍然需要运行时检查你已经在做以避免实际调用该方法.您可能还希望使用可用性宏来包装此类声明,以便在您使用10.5 / 10.6 SDK之后将忽略它,并且您将无法获得不同的编译器投诉.这看起来像这样:

#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_4 //ignore when compiling with the 10.5 SDK or higher@interface nspropertyListSerialization(MissingMethods)+ (NSData *)dataWithPropertyList:(ID)pList format:(nspropertyListFormat)format options:(nspropertyListWriteOptions)opt error:(NSError **)error;@end#endif
总结

以上是内存溢出为你收集整理的objective-c – 如何有条件地使用新的Cocoa API全部内容,希望文章能够帮你解决objective-c – 如何有条件地使用新的Cocoa API所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1002872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存