我剛剛看過答案here但沒有幫助。當我只爲方法聲明添加一個棄用的屬性時,編譯器會說Attributes on method implementation and its declaration must match
。我是否需要爲方法實現添加smth?如何正確棄用Xcode 4中的方法
謝謝!
我剛剛看過答案here但沒有幫助。當我只爲方法聲明添加一個棄用的屬性時,編譯器會說Attributes on method implementation and its declaration must match
。我是否需要爲方法實現添加smth?如何正確棄用Xcode 4中的方法
謝謝!
只需將屬性添加到聲明:
@interface Blah
- (void)method __attribute__((deprecated));
@end
提供您的包括是翻譯正確的,這應該能正常運行。也許您已將該屬性添加到定義,而不是聲明?否則,演示(代碼示例)會有所幫助。
更新
雖然上述方法也適用於典型的消息,似乎鐺獲取與IBAction
小號混淆。
隨着clang,ibaction
屬性被隱式插入(以前的內容爲typedef
)。
當在聲明中指定的屬性只,預處理器輸出如下:
// preprocessed declaration
- (void)__attribute__((ibaction))setSomething:(id)sender __attribute__((noreturn));
// preprocessed implementation
- (void)__attribute__((ibaction))setSomething:(id)sender
...
所以,它出現在編譯器只是這個隱藏裝飾糊塗了,你還必須將屬性添加到當方法是IBAction
時,實現/定義將抑制警告。
您必須在方法的聲明和實現上放置棄用的屬性,至少在Xcode 4.3.2中使用clang。
這是正確的。但爲什麼? – 2012-04-11 07:05:06
聳聳肩。我想他們在clang中比在gcc中實現的方式不同。 – 2012-04-11 08:05:36
這不行! – 2012-04-11 07:05:22
在我的機器上工作;)發佈您的代碼! – justin 2012-04-11 07:15:35
- (IBAction)showTag __attribute __((不建議使用)); 我得到這個:方法實現的屬性和它的聲明必須匹配。 – 2012-04-11 07:49:55