2

Objective-C のプライベート インスタンス変数の概念を理解するのに苦労しています。

クラスがあるとしましょう:

@interface Dog : NSObject

および 2 つの宣言されたセレクター

- (void)setSomeString:(NSString *)_someString;
- (NSString *)someString;

Dog.m 実装ファイルで、プライベート インスタンス変数を宣言します。

@interface Dog()
{
  NSString *someString;
}

プログラムのメイン メソッドで、新しい犬オブジェクトを作成します。

Dog *myDog = [[Dog alloc] init];

main メソッドからこのようなことができるのはなぜですか?

myDog.someString = @"Yoda";

someString 変数はプライベートで、セッターのみがアクセスできると思います

[myDog setSomeString:@"Yoda"];
4

3 に答える 3

4

実際にメソッドを呼び出しているドット構文を使用する場合setSomeString、違いは構文だけであり、意味ではありません:)

オブジェクトへのメッセージの送信に関するApple のドキュメントを確認してください

于 2012-07-30T14:58:27.887 に答える
0

ドット構文は実際に setter メソッドを呼び出します。iVar にアクセスするには、矢印構文を使用できます->

于 2012-07-30T15:02:32.223 に答える
0

ドット表記は単なる略語であり、

self.someVariable = newValue
//is the same as 
[self setSomeVariable:newValue];

currentValue = self.someVariable;
//is the same as
currentValue = [self someVariable];
于 2012-07-30T15:01:08.550 に答える