0

以下のプロパティがある場合:

@property (nonatomic, retain) MyObject *theObject;

次に、新しい MyObject を作成したい場合は、次のようにします。

self.theObject = [[MyObject alloc] init];

また:

self.theObject = [[[MyObject alloc] init] autorelease];
4

2 に答える 2

2

必要に応じて - 2 番目。

生成されたセッターを使用している場合は、 でマークされていretainます。つまり、そのプロパティに格納された値は保持されるため、所有オブジェクトを渡す必要はありません。

保持されているため、dealloc で解放する必要があります。

于 2013-01-30T11:48:44.520 に答える
2

自動解放を使用する必要があります。そうしないと、オブジェクトのリリース カウントが 2 つ ( からalloc1 つ、セッターによって 1 つretain) になるため、プロパティが設定解除されると、リークされます。

これは、強力なプロパティまたは保持されたプロパティとコピー プロパティにのみ適用されます。割り当てられたプロパティと弱いプロパティは、参照カウントを変更しないため、alloc-initted オブジェクトに割り当てる必要があります。

于 2013-01-30T11:48:11.893 に答える