【发布时间】:2010-03-18 14:56:57
【问题描述】:
只有当系统中尚未定义方法时,是否有方法提供方法实现(与框架定义的方法具有完全相同的名称)?例如方法 [NSSomeClass someMethod:] 仅存在于 Mac OS X 10.6 中,如果我的应用程序在 10.5 中运行,我将在类别中提供该方法的定义。但是当应用程序在 10.6 中运行时,我希望运行操作系统提供的方法。
背景:我正在创建一个针对 10.5 和 10.6 的应用。问题是我最近意识到 +[NSSortDescriptor sortDescriptorWithKey:ascending:] 方法只存在于 10.6 中,并且我的代码已经被该方法调用乱扔了。我可以为它提供一个默认实现(因为这次我自己实现它并不太难),但我希望每当我的应用程序在 10.6 上运行时调用“本机”。此外,如果我将来遇到类似的问题(使用更难以实现的方法),我可能无法提供单行替换。
这个问题有点类似于Override a method via ObjC Category and call the default implementation?,但不同的是,我只想在系统还没有实现的情况下提供实现。
谢谢。
【问题讨论】:
标签: objective-c cocoa macos