0

セッターメソッドの実装は次のとおりです。

- (void)setCount:(NSNumber *)newCount {
    [newCount retain];
    [_count release];
    // Make the new assignment.
    _count = newCount;
}

retainCountofが <=0 の場合_count、どのように解放できますか?

4

2 に答える 2

4

0 の保持カウントを持つことができる唯一の有効なオブジェクトは ですnil。また、メッセージを送信するとnil、他に何もせずに 0 が返されるため、そのケースがカバーされます。

「これが割り当て解除されたオブジェクトでどのように機能するのか」という意味であれば、そうではありません。また、割り当て解除されたオブジェクトの保持カウントは、実際には 0 ではありません。オブジェクトはもう存在しないためです。オブジェクトは破棄され、現在は単なるメモリの塊になっているため、属性がありません。割り当てが解除されたオブジェクトで何かを行うことは無効であり、何が起こるかは未定義です。

于 2013-04-09T17:18:49.490 に答える