0

私はこのように定義されたプロパティを持っています:

@property (nonatomic, retain) MyClass *someObject;

私は現在、この割り当てステートメントを使用しています。

someObject = [[MyClass alloc] init];

メモリ管理に関しては、上記の割り当てステートメントは次のようになります。

self.someObject = [[[MyClass alloc] init] autorelease];

セクションにあると仮定@synthesize someObject;@implementationます。また、私はARCを使用していません。

4

1 に答える 1

1

注: 以下は、元の投稿の EDITED バージョンに基づいており、「割り当て」が「保持」に置き換えられています ---

はい、どちらも MyClass オブジェクトを (適切に) プロパティに保持カウント 1 で保持するという点で、この 2 つは "同等" です。2 番目のバージョンでは、追加の作業が行われますが、これは、パフォーマンスにどの程度敏感であるかによって、問題になる場合とそうでない場合があります。

self.propname特に初期化と解放のために、クラス内からプロパティ参照 (つまり ) を使用するべきではなく、代わりにインスタンス変数を参照するべきだと主張する人もいます。他の人は正反対のことを主張します。私は通常、常にプロパティ参照を使用することを好みますが、(この場合のように) プロパティ参照を使用すると無関係な保持/自動解放が発生する可能性がある初期化中を除きます。

于 2012-09-26T16:45:06.310 に答える