我的问题是:我认为此代码中存在错误(这不是我的代码,我没有编译的Mac)。这是代码:
....
CDAUIView *theView = [[CDAUIView alloc] initWithFrame:rectFrame];
theView.myController = self;
self.view = theView;
[theView autorelease];
当View发布时,关于它的属性(myController)??
感谢您的回答
答案 0 :(得分:0)
如果正确写入CDAUIView,当它被取消分配时,它将释放它保留的任何对象。
答案 1 :(得分:0)
这一切都取决于相关属性背后的细节(具体来说,属性是否声明为retain
,copy
或assign
) - 但是这个代码看起来很好假设。在正常情况下,设置属性将保留对象,并释放对象可能导致其属性被释放(如果对象被释放将会发生)。在这种情况下,释放视图不应该导致其myController
被释放,因为它仍然由self
拥有。但即便如此,发布也只是平衡保留。
对象在保留时不会保留其实例变量,并且它不会因为它被释放而释放它们。它在获得所有权时保留它们,并在它准备放弃所有权时释放它们。