2015-04-29 47 views
0

這可能看起來像一個this,但我不認爲這回答我的問題,因爲它是關於關聯的對象,而不是由對象創建的對象和其唯一的指針駐留在對象內。在MRC下的Objective-C中,如果對象被取消分配,那麼它創建的對象也會被取消分配?

假設我在MRC模式下有這個例子。

// In h file 
@interface MyViewController : UIViewController { 
    NSObject* myNsObject; 
} 

// In m file 
-(void) viewDidLoad() { 
    myNsObject = [[NSObject alloc] init]; // I'm never going to release myNsObject 
} 

我很聰明,可以正確釋放myViewController。它的引用計數變爲零,並且它被解除分配。但是我從來沒有發佈myNsObject,所以它一直在引用計數爲1.所以發佈,因此de-alloc,會自動在myNsObject上完成?或者在這種情況下myNsObject會泄露?

+0

不,這看起來不像其他問題。 – rmaddy

回答

2

正確的內存管理這裏是在視圖控制器的dealloc方法來釋放myNsObject

- (void)dealloc { 
    [myNsObject release]; 

    [super dealloc]; 
} 

如果你創造的東西,那麼你是負責釋放它(下MRC)。

未能做到這一點會導致內存泄漏。