ここで答えを調べたところ、役に立ちませんでした。コンパイラが言うよりもメソッド宣言にのみ非推奨の属性を追加するとAttributes on method implementation and its declaration must match
。メソッドの実装にsmthを追加する必要がありますか?
ありがとう!
宣言に属性を追加するだけです。
@interface Blah
- (void)method __attribute__((deprecated));
@end
インクルードが翻訳に対して正しい場合、これは正常に機能するはずです。おそらく、宣言ではなく、定義に属性を追加しましたか?それ以外の場合は、デモンストレーション(コードサンプル)が役立ちます。
アップデート
上記のアプローチは一般的なメッセージでは機能しますが、clangはsと混同されているようIBAction
です。
clangを使用すると、ibaction
属性が暗黙的に挿入されます(以前はtypedef
)。
属性が宣言でのみ指定されている場合、プリプロセッサーの出力は次のようになります。
// preprocessed declaration
- (void)__attribute__((ibaction))setSomething:(id)sender __attribute__((noreturn));
// preprocessed implementation
- (void)__attribute__((ibaction))setSomething:(id)sender
...
したがって、コンパイラはこの隠された装飾に混乱しているように見えます。また、メソッドがである場合の警告を抑制するために、実装/定義に属性を追加する必要がありますIBAction
。
少なくともclangを使用したXcode4.3.2では、メソッドの宣言と実装の両方に非推奨の属性を設定する必要があります。