我需要弃用 Objective-C 协议中的单个方法。在普通的类/实例方法上我添加__attribute__ ((deprecated));
声明后。
看来它不适用于协议方法。如果我将它们标记为已弃用并在某个地方使用它们,则项目编译正常,不会出现预期的弃用警告。
这是 Apple LLVM 3.1 中的缺陷,还是我做错了什么?
尽管这里的答案提供了一些非常好的信息,但它们已经过时了。从 Xcode 5.0 和 LLVM 5.0 开始,似乎可以识别 Objective-C 协议方法的弃用警告。实现该方法时,Xcode 5 会对其进行标记:
警告:实现已弃用的方法
以下是我为实现已弃用的协议方法生成弃用警告所使用的步骤:
-
使用以下命令将协议方法标记为已弃用__deprecated
。来自新的 SDK 7.0 文档:
__deprecated causes
编译器在遇到使用已弃用功能的代码时生成警告。__deprecated_msg()
执行相同的操作,支持它的编译器将打印一条消息以及弃用警告。这可能需要打开此类警告-Wdeprecated
flag. __deprecated_enum_msg()
应该在枚举上使用,支持它的编译器将打印弃用警告。
#define __deprecated __attribute__((deprecated))
要弃用您的方法,请执行以下操作:
- (void)aDeprecatedProtocolMethod __deprecated;
仅此一点should足以让 Xcode 显示弃用警告。但是,您应该遵循接下来的几个步骤(知道 Xcode 有时可能非常挑剔)以确保显示警告。
-
添加带有弃用警告标签的文档注释。请参阅下面的代码示例以了解具体操作方法:
/** Describe the method here - what does it do, how does it work, etc. Very brief.
@deprecated This delegate method is deprecated starting in version 2.0, please use otherMethodNameHere:withAnExtraParameter: instead. */
- (void)aDeprecatedProtocolMethod __deprecated;
Clean the project (⌘+⇧+K) and then Build the project (⌘+B) - just because Xcode can be funky sometimes.
我不能 100% 确定此功能是何时何地引入的(可能是 SDK 7.0 和 10.9,或 Xcode 5.0 / 5.0.1,或 LLVM 5.0) - 但它仍然有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)