メモリ管理について質問があります。以前に init* メソッドで割り当てたインスタンス変数があります。プログラムのある時点で、このオブジェクトを保持しました。私の dealloc メソッドで、このオブジェクトを nil に設定した場合、彼は正しく割り当て解除されますか? 例を示しましょう。これは Ah クラスです:
@interface A: NSObject {
B *bvariable;
}
-(id) init;
と彼の実装:
@implementation A
-(id) init: {
bvariable= [[B alloc] init];
/**
* Let say for some reason, I called
*/
[bvariable retain];
}
}
-(void) dealloc {
bvariable = nil;
[super dealloc];
}
私の質問は、GC がいつA クラスでdeallocを呼び出すかということです。bvrariableは適切に割り当て解除されますか?
私はこのオブジェクトを保持しているので、そのオブジェクトを解放するにはreleaseを 2 回呼び出す必要があるため、私の推測ではノーです。オブジェクトを nil に設定しても、メッセージを bvrariable オブジェクトに送信しているため、それらの割り当ては解除されません。しかし、ある人は私に反対のことを言いました。
誰かが私を啓発できますか?
アドバイスありがとうございます !!