-2

iOS プログラミングでプロパティを使用する方法を学ぼうとしていました。私が得たものが正しいかどうか、ここの人々に確認したいだけですか?

私は財産を持っていると言う

@interface Person : NSObject

@property NSString *firstName;

@end

実装中

@implementation XYZPerson
@synthesize firstName;
...
@end

これで、

a)という名前のインスタンス変数:firstNameが作成されます

b)クラス内でプロパティを使用したいときはいつでもself.firstName、 (またはセッター/ゲッター)を呼び出します

c) 次のように init メソッドでプロパティを初期化できます。

-(id) init {
 ...
 self.firstName=@"SomeText";
 ... 
 }

上記の点は正しいと思いますよね?

4

1 に答える 1

4

あなたの@property宣言にはいくつかのことが欠けていますが、あなたの言うことはほとんど正しいです。少なくともstrongorcopyまたはのようなプロパティ属性が必要assignです。変更可能な文字列の場合、通常copy、文字列を変更できないようにするために使用します。だから@property (copy) NSString *firstNameこれの詳細については、この回答を参照してください

ほとんどの人nonatomicは、生成されたゲッター/セッターでスレッド同期を無効にすることにより、パフォーマンスを向上させるためにも使用します。詳細については、この回答を参照してください

サブクラスがセッター/ゲッターをオーバーライドし、オブジェクトが完全に初期化されるまで正しく機能しない可能性があるため、メソッドでプロパティアクセサーを使用しないことを推奨する人もいますinit(ivar への直接アクセスを優先)。実際には、これについて心配する必要はほとんどないため、多くの人がこのアドバイスを無視しています。

Xcode の最新バージョンでは、手動で追加する必要もありません@synthesize。アンダースコアがプレフィックスされたインスタンス変数 (_firstName例では) が自動的に合成されます。

于 2013-07-25T11:46:55.197 に答える