1

iOS でメモリ管理のチュートリアルを読んでいましたが、いくつか質問したいと思います。チュートリアルでは、次のように実装されたセッター メソッドを示します。

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

メソッドを実装する2つのreset方法。

方法 1. この方法に関する私の質問は次のとおりです。以下のコードでは、 が(経由で)zeroに割り当てられていることがわかります。しかし、その後ゼロがリリースされます。は今どこを指しているでしょうか?解放されたオブジェクトを指している状況は発生しません か? (私はこれらのことから始めたばかりなので、もちろん私が言っていることは正しくないかもしれません)._countsetCount_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;

}

ありがとう。

4

6 に答える 6