for(UIView *subview in [scrollView subviews]) {
NSLog(@"subviews Count=%d",[[scrollView subviews]count]);
//[subview release];
[subview removeFromSuperview];
}
在上面的方法中,如果我使用 [subview removeFromSuperview];
它工作正常......但是如果我使用
[subview release];
它崩溃了..我想知道两者是否相同或者它们之间有什么区别吗?
最佳答案
@MathieuK 是正确的,但值得深入研究,因为它在 ObjC 中是一个非常重要的概念。你不应该在你没有显式或隐式地-retain
的对象上调用-release
(通过调用Three Magic Words之一)。您不会调用 -release
来释放对象。您调用它来释放您对对象的控制。 scrollview 是否保留其 subview 与您无关(它确实保留了其 subview ,但仍然不关您的事)。 -removeFromSuperview
是否调用 -release
也不关你的事。那是在 ScrollView 和它的 subview 之间。重要的是,当您关心对象时保留它们,当您不再关心它们时释放它们,让系统的其余部分负责保留和释放它关心的内容。 p>
关于objective-c - removefromsuperview 会释放scrollview 的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1340754/