在 MRC 下的 Objective-C 中,如果一个对象被取消分配,它创建的对象也会被取消分配吗?

In Objective-C under MRC if an object gets de-alloced do objects it created get de-allocated as well?

这可能看起来像 this 的复制品,但我认为这并不能回答我的问题,因为它是关于关联对象的,而不是关于对象创建的并且其唯一指针驻留在对象内的对象。

假设我在 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 的位置。因此,是否会在 myNsObject 上自动完成释放并因此取消分配?或者在那种情况下 myNsObject 会泄露吗?

这里正确的内存管理是在视图控制器的dealloc方法中释放myNsObject

- (void)dealloc {
    [myNsObject release];

    [super dealloc];
}

如果您创建了一些东西,那么您有责任发布它(在 MRC 下)。

如果不这样做会导致内存泄漏。