3

メソッド呼び出しの違いは何ですか: もしあれば?
time.text = s;
[time setText:s];

https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/JumpRightIn/iPhone101/Articles/06_ImplementingController.htmlのチュートリアルでは、次の両方 を使用しています。 それが重要な場合は、Objective-Cに比較的慣れていません。
- (IBAction)changeGreeting:(id)sender {
self.userName = self.textField.text;
NSString *nameString = self.userName;
if ([nameString length] == 0) {
nameString = @"World";
}
NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
self.label.text = greeting;
}


4

3 に答える 3

3

AFAIKどちらも同じです...

time.text = s;

内部的に実行します...[time setText:s];

初期のものは、一部の人々がより使いやすく、他の言語で非常に普及しているドット表記です。

編集:

追加するもう1つのことは、ここではプロパティのみを参照していることです。これは、プロパティにゲッターとセッターがあるだけだからです。より多くのパラメーターを渡すことができるため、メソッド呼び出しは別のものです。

于 2012-05-27T12:30:09.420 に答える
3

他の答えにはいくつかのメリットがありますが、いくつかの混乱もあります。これが私の見解です:

角かっこ表記は、メッセージの送信/メソッドの呼び出しの一般的な構文です。

さまざまな方法があります。特定の種類のメソッドの1つは、アクセサー(プロパティのセッターとゲッター)です。

ドット構文は、アクセサーを呼び出すための代替形式です。これはやや新しいスタイルで、ここ数年で言語に追加されたばかりです。より明確で冗長性が少ない場合は、それを使用することは完全にオプションです。違いは純粋に表面的なものです。ドット構文を使用することは、より大きな式内で部分式がどのように使用されるかに応じて、ゲッターまたはセッターのいずれかのアクセサーを呼び出すことと同じです。

于 2012-05-27T13:01:27.677 に答える
0

ドット構文(time.text = s)は、プロパティセッターとゲッターによって使用される特殊なケースです。@propertyキーワードを使用してプロパティを宣言し@synthesizeてからsetterとgetterを宣言するか、を使用してsetterとgetterを個別に生成するように宣言すると、@dynamicドット構文を使用してsetterとgetterにアクセスできます。

例として、インターフェイスファイルでプロパティmyIntを宣言します。

@property (readwrite, assign) int myInt;

そのステートメントreadwriteでは、ゲッターとセッターが必要であり、値を保持またはコピーするのではなくassign、値を割り当てる必要があることを意味します。myInt次に、私のインターフェースで次のように書きます。

@synthesize myInt;

myIntこれで、を使用してアクセスし、を使用しself.myIntて設定できるというプロパティができself.myInt = ...ました。

のような角かっこを使用[nameString length]することは、Objective-Cのオブジェクトでメソッドを呼び出すための標準的な方法であり、生成されたプロパティに対しても機能します([self myInt])。ドット構文は、プロパティのみのショートカットです。

于 2012-05-27T12:31:45.427 に答える