2

Objective-C が進化するにつれて (私は iPhone/iPad 開発用の xcode/ios でのみ使用しています)、クラス インスタンス変数をレイアウトするさまざまな方法があるようです。一般的なコンセンサスになった「ベストプラクティス」の方法はありますか? (私は、Apple のデモ/サンプル コードがスタイルの点でいたるところにあることを認識しています)

特に、プライベート変数を処理するというアイデア。クラスのいくつかのインスタンス変数を管理するために私が見たいくつかの方法を次に示します (簡潔にするためにインターフェイス/実装を省略しました)。

.h

@property (nonatomic, strong) NSString *aString;

.m

@synthesize aString;

- (void)aMethod {
   aString = @"Access directly, but if I don't have custom getter/setters and am using ARC, do I care?";
   self.aString = @"Access through self";
}

またはこれ:

.h

@property (readonly) NSString *aString;

.m

@property (nonatomic, strong) NSString *aString;
...
@synthesize aString;

またはこれ:

.m

@interface aClass {
 NSString *aPrivateString;
}

- (void)aMethod {
  aPrivateString = @"Now I have to access directly, but is this atomic/nonatomic?";
}

この質問がスタイルの議論に変わることを望んでいませんが、「特定の、複雑な、または奇妙なことをしていない場合は、このメソッドを使用してクラス変数を定義する」という標準が必要なようです。

4

1 に答える 1

2

パブリックおよびプライベート ivar/プロパティには、次の規則を使用することをお勧めします。

.h

@property (nonatomic, strong) NSString *publicString;

.m

@implemention aClass 
{
  NSNumber *_privateNumber;
}
@synthesize publicString = _publicString;

このように、_ で始まるすべてが ivar です (_publicString は、プロパティの基になる ivar です。これにより、self.publicString を使用したいときに publicString を使用できなくなります)。

于 2012-07-08T19:55:11.923 に答える