Objective-Cでは、ドット演算子を使用して値を設定および取得できることを確認しました。同じタスクで、中括弧のメソッド呼び出し内に「[obメソッド]」のようなものが表示されました。この種の構文を何と呼びますか?
4 に答える
角かっこ表記:スモールトーク言語の定番であり、ObjC言語の素敵な顔になりました。
ブラケットはSmallTalkの「そこにいる、このメッセージを受け取って何かをする」という言い方であり、Objective Cで実装された方法です。最初の部分[Object]にメッセージを送信し、2番目の部分にメッセージを記述します。 [オブジェクトメッセージ];
もちろん、それらはプロパティで同様の機能も果たします。ほとんどの言語のプロパティはドット表記(Object.property)で記述されていますが、Objective-Cと、ivarを使用しないプロパティに対する最新のランタイムのサポート、および@synthesizeディレクティブを使用すると、プロパティは同じ名前のゲッターを自動的に生成します。複雑に聞こえますか?そうではありません。プロパティの例がある場合は、次の2つの方法のいずれかでアクセスできます。
self.example;
または
[self example];
簡単!
しかし、@synthesizeディレクティブはそれだけではありません。ゲッターとセッターもあります。セッターには、ゲッターと同じ数の方法でアクセスできます。
self.example = foo;
と同等です
[self setExample:foo];
ブラケット表記は実際には非常に重要であるため、コンパイラはコンパイル時にほとんどのドット表記をブラケット表記に最適化します。
method
これはメッセージングまたはメッセージ送信と呼ばれ、オブジェクトにメッセージを送信しますob
JavaまたはC++でメソッドを呼び出すのと似ています
したがって、Javaでの同等のものは
ob.method();
[ob method]
これは、Objective-cでメソッドを呼び出す方法です。myObject.method()
Javaの例では、を呼び出すのと同じ方法です。
ob.myProperty
たとえば、getter/setterメソッドを使用してivarにアクセスする方法です。
Getメソッド->NSLog(@"%@",ob.myProperty);
メソッドの設定->ob.myProperty = @"Hello World";
次のようなsetメソッドも使用していることに注意してください。
[ob setMyProperty:@"Hello World"];
または、次のようなgetメソッドを使用します。
NSLog(@"%@",[ob myProperty]);
Objective-cでは、とを使用して作成する機会があるため、通常、セッターとゲッターを手動で作成することはありません。@property
@synthesize
これは関数呼び出しとして知られています。
javaやc#のような他のプログラミング言語で関数を呼び出すように:
ob.method() // where ob is object and method is the function name..
同様に、Objective Cで関数を呼び出したい場合、構文は次のようになります。
[ob method];