[解決済み] 未宣言のセレクタ」の警告を消す方法
2022-04-23 06:41:08
質問
NSObjectインスタンスにセレクタを使用したい。 なし 実装されたプロトコルは必要ありません。例えば、呼び出されたNSObjectインスタンスがそれをサポートしていれば、エラープロパティを設定しなければならないカテゴリーメソッドがあります。これがそのコードで、コードは意図したとおりに動作します。
if ([self respondsToSelector:@selector(setError:)])
{
[self performSelector:@selector(setError:) withObject:[NSError errorWithDomain:@"SomeDomain" code:1 userInfo:nil]];
}
しかし、コンパイラは setError: シグネチャを持つメソッドを見つけられず、警告を表示します。
@selector(setError:)
というスニペットがあります。
Undeclared selector 'setError:'
この警告を消すためにプロトコルを宣言する必要はありません。なぜなら、これを使う可能性のあるすべてのクラスが何か特別な実装をする必要はないからです。というのも、これを使う可能性のあるすべてのクラスに特別な実装をさせたくないからです。ただ、慣習として
setError:
メソッドまたはプロパティを使用します。
これは可能なのでしょうか?どうやって?
乾杯
EP
解決方法は?
で警告を無効化する方法もあります。
#pragma GCC diagnostic ignored "-Wundeclared-selector"
この行は、警告が発生した.mファイル内に配置することができます。
更新してください。
LLVMでもこのように動作します。
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
... your code here ...
#pragma clang diagnostic pop
関連
-
[解決済み] Objective-Cでオブジェクトをキャストする方法
-
[解決済み] Objective-Cは構造体の使用を禁じていますか?
-
[解決済み] Objective-Cの#importと#includeの違いは何ですか?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] iOS 8で位置情報サービスが利用できない
-
[解決済み] Objective-Cで抽象クラスを作成する
-
[解決済み] クラスメソッドとインスタンスメソッドの違いは何ですか?
-
[解決済み] objective-c/cocoaで例外を投げる
-
[解決済み】idの代わりにinstancetypeを使い始めるのは有益でしょうか?
-
[解決済み】なぜObjective-Cのファイルには.mという拡張子がついているのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Objective-CのNSLog関数でNSString型を出力する方法とは?
-
[解決済み] 警告 : フォーマット文字列は文字列リテラルではありません (安全でない可能性があります)
-
[解決済み] NSNumberをNSStringに変換する方法
-
非静的宣言に続く "****"の静的宣言
-
[解決済み] インスタンスに送信されたセレクタが認識されない」を解決するには?
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] ブロック内の変数をブロック外の変数に代入する
-
[解決済み】iOS 7.0とシステム劣化で無効なコンテキスト0x0が表示される
-
[解決済み】Objective-Cでオブジェクトがどのクラスであるかをテストするにはどうすればよいですか?
-
[解決済み】Cocoaアプリからターミナルコマンドを実行する