for(UIView *subview in [scrollView subviews]) {
NSLog(@"subviews Count=%d",[[scrollView subviews]count]);
//[subview release];
[subview removeFromSuperview];
}
在上面的方法中,如果我使用[subview removeFromSuperview];
它工作正常......但如果我使用[subview release];
它崩溃了..我想知道两者是否相同或者它们之间有什么区别吗?
@MathieuK 是正确的,但值得深入研究这一点,因为它是 ObjC 中非常重要的概念。你永远不应该打电话-release
在一个你没有的物体上-retain
显式或隐式(通过调用其中之一三个神奇的词)。你不打电话-release
为了释放一个对象。你调用它来释放持有you已戴上物体。滚动视图是否保留其子视图不是你的事(它确实保留了它的子视图,但它仍然不是你的事)。无论-removeFromSuperview
calls -release
也不关你的事。这是在滚动视图及其子视图之间。重要的是,当您关心对象时保留它们,当您不再关心它们时释放它们,并让系统的其余部分负责保留和释放对象it关心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)