12

この [クラス メソッド] のような呼び出しと、クラスが「メソッド」メッセージに応答しない可能性があるという警告があります。

「メソッド」メッセージは実際には存在しませんが、私のコードは不明なメッセージキャッチ (forwardingTargetForSelector を使用) を使用しているため、正常に実行され、そのように実行するようにビルドされています。この迷惑な警告を非表示にするにはどうすればよいですか?

4

2 に答える 2

16

実装されていない可能性のあるメッセージをオブジェクトに送信する予定であり、失敗をキャッチすることがわかっている場合は、呼び出しを使用する必要があります。

id myClone = [anObject performSelector:@selector(copy)];

これは、存在しない可能性のあるメソッドを呼び出しているという意図をより直接的に宣言し、それでかっこいいです。これは、警告を抑制したり、メソッドを偽造したりするよりも、より明確な方法です。

于 2009-09-25T17:55:50.727 に答える
3

そのメソッドを宣言するカテゴリを定義できます。コンパイル時にスコープ内に定義があると、警告を回避できます。何かのようなもの

@interface MyClass (ShutUpTheCompilerMethods)
- (void)method;
@end

...

[MyClass method] //no warning here
于 2009-09-25T17:50:08.443 に答える