如何在Xcode 4中正确弃用方法

时间:2012-04-11 05:33:14

标签: ios xcode xcode4 methods deprecated

我刚看过答案here但没有帮助。当我仅将一个不推荐使用的属性添加到方法声明时,而不是编译器说Attributes on method implementation and its declaration must match。我是否需要在方法实现中添加smth?

谢谢!

2 个答案:

答案 0 :(得分:13)

只需将属性添加到声明:

@interface Blah
- (void)method __attribute__((deprecated));
@end

如果您的包含对于翻译是正确的,这应该可以正常工作。也许您已将属性添加到定义,而不是声明?否则,演示(代码示例)会有所帮助。

<强>更新

虽然上述方法适用于典型的消息,但似乎clang与IBAction混淆。

使用clang,隐式插入ibaction属性(以前为typedef)。

仅在声明中指定属性时,预处理器输出如下:

// preprocessed declaration
- (void)__attribute__((ibaction))setSomething:(id)sender __attribute__((noreturn));
// preprocessed implementation
- (void)__attribute__((ibaction))setSomething:(id)sender
...    

因此,看起来编译器只是被这个隐藏的装饰搞糊涂了,你还必须在实现/定义中添加属性以在方法为IBAction时禁止警告。

答案 1 :(得分:0)

您必须将deprecated属性放在方法的声明和实现上,至少在带有clang的Xcode 4.3.2中。