如何正确地弃用Xcode 4中的方法

我只是在这里查看答案,但没有帮助。 当我只为方法声明添加一个弃用的属性比编译器说Attributes on method implementation and its declaration must match 。 我是否需要在方法实现中添加smth?

谢谢!

只需将该属性添加到声明中:

 @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时候,你还必须添加属性到实现/定义来抑制警告。

您必须在方法的声明和实现上放置弃用的属性,至less在Xcode 4.3.2中使用clang。