私はObjective-Cプログラミング言語でより詳細に理解しようとしています。
今、[self]
値を設定するときの呼び出しについて質問があります。
Appleのドキュメントには、「selfを使用しない場合は、インスタンス変数に直接アクセスします。(...)」と記載されています。
したがって、インスタンス変数を持つ犬のオブジェクトがあると仮定しますNSString *name
。
[self]
キーワードを使用せずに、次のようにそのインスタンス変数のセッターを作成します。
(void)setName:(NSString *)_name
{
name = _name;
}
または、[self]キーワードを使用してセッターを作成すると、次のようになります。
(void)setName:(NSString *)_name
{
self->name = _name;
}
mainメソッドで、新しいdogオブジェクトを作成し、その名前の値を設定して返します。
Dog *myDog = [[Dog alloc] init];
myDog.name = @"Yoda";
NSLog(@"name of the dog: %@", myDog.name);
どちらの場合も、Yodaの戻り値を取得します。しかし、技術的に[self]がある場合とない場合のインスタンス変数呼び出しの違いはどこにありますか?セッターメソッドを使用せずに同じ変数(メモリ)を呼び出すのですか?