背景:我正在创建一个针对10.5和10.6的应用程序.问题是我最近意识到方法[NSSortDescriptor sortDescriptorWithKey:ascending:]仅存在于10.6中,并且我的代码已经被该方法调用弄乱了.我可以为它提供一个默认实现(因为这次我自己实现起来并不太困难),但是我希望每当我的应用程序在10.6上运行时都会调用“本机”实现.此外,如果我将来遇到类似的问题(使用更难以实现的方法),我可能无法提供单线替换.
这个问题与Override a method via ObjC Category and call the default implementation?模糊地相似,但不同之处在于我只想在系统还没有实现时才提供实现.
谢谢.
解决方法 是的,这是可能的.由于你的目标是10.5我假设你正在使用ObjC2运行时,这使得它非常简单.Objective-C Runtime Reference拥有您需要的所有方法.具体来说,您可以使用class_getClassMethod或class_getInstanceMethod来查看该方法是否已存在,然后使用class_addMethod将您的实现绑定到该选择器(如果该类尚未拥有它).
总结以上是内存溢出为你收集整理的通过Objective-C中的类别有条件地覆盖系统方法?全部内容,希望文章能够帮你解决通过Objective-C中的类别有条件地覆盖系统方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)