[解決済み] Objective-Cのセレクタ?
質問
まず、セレクタが何なのかよくわかりません。 私の理解では、それはメソッドの名前で、それを「SEL」型のクラスに割り当て、respondToSelectorなどのメソッドを実行して、受信者がそのメソッドを実装しているかどうかを確認することができます。 どなたか、もっと良い説明をお願いします。
次に、ここまでで、以下のようなコードになります。
NSString *thing = @"Hello, this is Craig";
SEL sel = @selector(lowercaseString:);
NSString *lower = (([thing respondsToSelector:sel]) ? @"YES" : @"NO");
NSLog (@"Responds to lowercaseString: %@", lower);
if ([thing respondsToSelector:sel]) //(lower == @"YES")
NSLog(@"lowercaseString is: %@", [thing lowercaseString]);
しかし、たとえ
thing
は明らかにNSStringの一種であり、lowercaseStringに反応するはずなのに、「respondsToSelector」条件が "YES"を返すようにできない......。
どのように解決するのですか?
メソッド名には十分注意する必要があります。 この場合、メソッド名はただの"です。
lowercaseString
"ではなく、"
lowercaseString:
"ではありません(コロンがないことに注意してください)。 そのため
NO
が返されるのです。
NSString
オブジェクトは
lowercaseString
メッセージには反応しますが
lowercaseString:
メッセージではありません。
コロンを付けるタイミングはどうすればいいのでしょうか? メッセージの名前にコロンをつけるのは、メッセージの呼び出し時にコロンをつける場合、つまり引数を1つ取る場合です。 引数をひとつしか取らない場合はそうなります。
lowercaseString
のように)、コロンはありません。 複数の引数を取る場合は、次のように余分な引数名とコロンを追加しなければなりません。
compare:options:range:locale:
.
また のドキュメントを参照してください。 を見て、末尾のコロンの有無に注意してください。
関連
-
[解決済み] Objective-CでNSStringsを連結するためのショートカット集
-
[解決済み] Objective-Cの定数
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Objective-Cでデリゲートを作成するにはどうしたらいいですか?
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] Objective-Cで、オブジェクトの種類をテストするにはどうしたらいいですか?
-
[解決済み] Objective-Cです。複数の引数を持つセレクタを呼び出す
最新
-
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で「認識できないセレクタがインスタンスに送信されました」エラー
-
[解決済み] 現在の日付から7日分を差し引いた日数
-
[解決済み] error: Writeable atomic property cannot pair with synthesized setter/getter and the user defined setter/getter.
-
[解決済み] 角括弧 < > と引用符 " " を使って #import する。
-
[解決済み] Xcodeはクラッシュの原因となる行を表示しない
-
[解決済み] NSPredicate: NSDateプロパティの日によるオブジェクトのフィルタリング
-
[解決済み] iOSの合成されたプロパティの名前を、先頭のアンダースコアで変更するのはなぜですか?重複
-
[解決済み] Objective-Cでコールバックを実行する方法
-
[解決済み] performSelectorの使用: メソッドを呼び出すだけと比較した場合
-
[解決済み] キーチェーンのアイテムは何がユニークなのか(iOSの場合)?