あなたの学習に欠けている概念は「セレクター」です。これは本質的に、括弧で囲まれたパラメーターの受け渡しで得られるよりも多くのセマンティクスでメソッド シグネチャを "装飾" するようなものです。メソッドのプロトタイプには、説明的な文のような「セレクター」を使用する傾向があります。例として、次の基本関数を考えてみましょう。
void function setDimensions(int width, int height);
Objective-C では、次のように記述します。
- (void) setWidth:(int) newWidth height:(int) newHeight;
また、「セレクター」( Objective-C のファーストクラスの概念) はsetWith:height: です(コロンを含みますが、それ以外は含みません)。それが、そのクラスのメソッドを一意に識別するものです。
セレクターのコロンの後に引数を配置してそのオブジェクトにメッセージを送信すると、実行時にそのメソッドが呼び出されます。したがって、メッセージには 3 つの重要なコンポーネントがあります。受信者、セレクター、適切に配置された引数です。
[anObject setWidth: 1024 height: 768];
ここで、anObject
は受信者、setWidth:height:
はセレクター (ランタイムがメソッドを見つけるのに役立ちます)、引数は次のとおりnewWidth = 1024; newHeight = 768;
です。
次に、メソッドの実装で、期待どおりに newWidth と newHeight を使用します。
- (void) setWidth:(int) newWidth height:(int) newHeight; {
self.width = newWidth; // 1024
self.height = newHeight; // 768
}
最初はぎこちなく余分に思えるかもしれませんが、慣れてくるとそれが好きになり、他の言語でより長く、より意味のある関数名を書いていることに気付くでしょう。
セレクターに関連する概念は、Objective-C ランタイムのいくつかの基本、特に「メッセージの送信」の概念 (「メソッドの呼び出し」ではなく) と一緒に学習すると、よりよく理解できます。メッセージで使用するセレクターに基づいて実際のメソッドが検索される時間。これが実行時に行われるという事実は、非常に動的なアーキテクチャに驚くべき柔軟性をもたらします。