Vil*_*urz 12 xcode objective-c llvm clang ios
我需要弃用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
旗帜打开这样的警告.__deprecated_enum_msg()
应该在枚举上使用,支持它的编译器将打印弃用警告.
#define __deprecated __attribute__((deprecated))
Run Code Online (Sandbox Code Playgroud)
要弃用您的方法,请执行以下操作:
- (void)aDeprecatedProtocolMethod __deprecated;
Run Code Online (Sandbox Code Playgroud)
仅这应该是足够的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;
Run Code Online (Sandbox Code Playgroud)清理项目(⌘+ ⇧+ K)然后构建项目(⌘+ B) - 只是因为Xcode有时会很时髦.
我不是100%确定何时或何地引入此功能(可能使用SDK 7.0和10.9,或Xcode 5.0/5.0.1,或使用LLVM 5.0) - 但它仍然有效.
归档时间: |
|
查看次数: |
6205 次 |
最近记录: |