まず、いくつかの文脈:SOの質問に答えながら、投稿者は[self.propertyGetter:newValue];
に似た構文でゲッターを設定しようとしていた投稿に出会った。なんらかの理由でこれがコンパイルされ、私は自分自身に "これは無関心ではないでしょうか?"と思った。だから、私の疑問は、なぜこれは「仕事」ですか? (完全に明確にするために、ポスターは効果がないと不平を言っていたので、「仕事」によって、私はコンパイルを意味する)。ゲッターの設定は何ですか?
答えて
引用したコードは[self.propertyGetter:newValue]
です。 Objective-Cコンパイラがこれを解析する方法は次のとおりです。
最初のものは、メッセージの受信者でなければなりません。そのコードでは、受信者はself.propertyGetter
の値です。コンパイラはself.propertyGetter
を[self propertyGetter]
に変換します。したがって、引用したコードを[[self propertyGetter]:newValue]
として書き直すことができます。
コンパイラは、メッセージのセレクタを把握する必要があります。通常、setStatusBarHidden:animated:
のようなキーワードセレクタが表示されます。キーワードセレクタには、コロンが続く一連のキーワードが表示されます。しかし、それはキーワードが長さゼロであることが分かります。したがって、コロン自体が有効なキーワードセレクタです。コンパイラはこれを次のように見ます:[[self propertyGetter] :newValue]
。ゼロ長のキーワードを使用すると、ほとんどの場合、非常に悪いスタイルになります。
セレクタを使用してインスタンスメソッドを宣言できます。例えば:[self propertyGetter]
そのメソッドを持つクラスのオブジェクトを返す場合
- (void):(NSObject *)newValue;
は、コードがコンパイルおよび実行されます。
コンパイラはid
は、ワイルドカード型であり、あなたがそれを送信しようとした場合、コンパイラは文句を言わないので、そのように命名法と任意のクラス、および[self propertyGetter]
リターンが(当時のコードがコンパイルされ、id
を入力見ている場合任意の既知のメッセージセレクタ)。しかし、[self propertyGetter]
が実際に:
メッセージを理解していないと、アプリケーションは実行時にクラッシュします。
- 1. javabeanゲッターでクッキーを設定する
- 2. ゲッター付きの自動プロパティを設定することはできますか?
- 3. WebRTC設定のメカニズムは何ですか?
- 4. JScrollPaneのデフォルト設定は何ですか
- 5. 私の.htaccess設定は何ですか?
- 6. intのセッター/ゲッターの正しい属性は何ですか?
- 7. トランザクションフロー設定の設定とTransactionScopeOptionの設定との違いは何ですか?
- 8. 実際にES6クラスのゲッターとセッターは何ですか?
- 9. セッターとゲッターを設定または取得するランダム名メソッド
- 10. スウィフトでゲッターとセッターを設定できない
- 11. IntelliJゲッターとセッターコードの生成を設定する
- 12. ES6クラスのゲッターを列挙可能に設定する
- 13. Xcode 4のデバッグビルド設定の正しいコード署名設定は何ですか?
- 14. C#.NETで定義ゲッターは、体が
- 15. 設定ファイル(ここではredis-server)の「デフォルト」は何ですか
- 16. IsSchemaBoundビューの設定はSQL Serverでは何ですか?
- 17. Newtonsoft.Jsonを使用すると、ゲッターのプロパティのバッキングフィールドは何ですか?
- 18. ソーシャル設定者アダプタとソーシャル設定者の違いは何ですか?
- 19. Labview:VI呼び出し設定とSubVIノード設定の違いは何ですか?
- 20. アンドロイドのスイッチの設定は正確には何ですか?
- 21. emacs preludeで設定/設定ファイルとして使うべきは何ですか?
- 22. djangoアプリの設定でCMS_TEMPLATESとは何ですか?アプリで
- 23. Polymerの設定でNode.jsの役割は何ですか?
- 24. Pryのプロンプト設定でnest_levelの意味は何ですか?
- 25. Gradleの「オンデマンドでの設定」は正確に何ですか?
- 26. Qtの設定オプション "-commercial"は実際には何ですか
- 27. Atom - 設定の下で "Project Home"とは何ですか?
- 28. codeigniter電子メールライブラリの設定で「ユーザエージェント」とは何ですか?
- 29. SonataPageBundleコンテナの設定で「ブロック」オプションは何ですか?
- 30. Log4j2の設定で「ステータス」とは何ですか?
この場合、彼が設定しようとしていたのはUILabelの 'backgroundColor'プロパティでした。彼は運が良かったと思う。いつものように、あなたの優れた答えはロブにとても感謝しています。 – CodaFi
私はそのコンパイル例を見たいと思っています...私は答えを信じていませんが、 '[] 'の構文のあいまいさは常に....面白かったからです。 – bbum
@bbum https://github.com/mayoff/Bridging-Categories –