iOS でメモリ管理のチュートリアルを読んでいましたが、いくつか質問したいと思います。チュートリアルでは、次のように実装されたセッター メソッドを示します。
- (void)setCount:(NSNumber *)newCount {
[newCount retain];
[_count release];
// Make the new assignment.
_count = newCount;
}
メソッドを実装する2つのreset
方法。
方法 1. この方法に関する私の質問は次のとおりです。以下のコードでは、
が(経由で)zero
に割り当てられていることがわかります。しかし、その後ゼロがリリースされます。は今どこを指しているでしょうか?解放されたオブジェクトを指している状況は発生しません
か? (私はこれらのことから始めたばかりなので、もちろん私が言っていることは正しくないかもしれません)._count
setCount
_count
_count
- (void)reset {
NSNumber *zero = [[NSNumber alloc] initWithInteger:0];
[self setCount:zero];
[zero release];
}
方法 2。
ここで私は誰がzero
今リリースするのか興味がありますか? (alloc を使用して作成されているため、正しく解放する必要があります)。それはdeallocで行われますか?
- (void)reset {
NSNumber *zero = [[NSNumber alloc] initWithInteger:0];
[_count release];
_count = zero;
}
ありがとう。