我刚刚在这里查看了答案,但没有帮助。当我只在方法声明中添加不推荐使用的属性时,编译器会说Attributes on method implementation and its declaration must match
。我需要在方法实现中添加 smth 吗?
谢谢!
只需将属性添加到声明中:
@interface Blah
- (void)method __attribute__((deprecated));
@end
如果您的包含对于翻译是正确的,这应该可以正常工作。也许您已将属性添加到定义中,而不是声明中?否则,演示(代码示例)会有所帮助。
更新
尽管上述方法适用于典型消息,但似乎 clang 与IBAction
s 混淆了。
使用 clang,ibaction
属性被隐式插入(对于以前的 a typedef
)。
当仅在声明中指定属性时,预处理器输出如下:
// preprocessed declaration
- (void)__attribute__((ibaction))setSomething:(id)sender __attribute__((noreturn));
// preprocessed implementation
- (void)__attribute__((ibaction))setSomething:(id)sender
...
因此,编译器似乎只是被这种隐藏的装饰弄糊涂了,您还必须将属性添加到实现/定义中以在方法为IBAction
.
您必须将 deprecated 属性放在方法的声明和实现上,至少在带有 clang 的 Xcode 4.3.2 中。