我无法理解如何在ARC中释放这些对象,这对我来说仍然存在混淆。
假设我在方法
中创建一个视图控制器或任何其他使用alloc的视图 -(void) displayView
{
RegViewController *sampleView = [[RegViewController alloc] init];
[sampleView setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[sampleView setModalPresentationStyle:UIModalPresentationFormSheet];
[self presentModalViewController:sampleView animated:YES];
}
是否会释放方法块完成时创建的对象,或者我们应该通过给出引用来显式释放?
答案 0 :(得分:1)
在这种情况下, sampleView 将在解除模态视图时释放。在这种情况下,人们不需要做任何其他事情。
答案 1 :(得分:0)
视图控制器在块结束时自动释放。但是,不意味着它被解除分配 - 它仍然由presentModalViewController:animated:
方法保留,并在被解除时释放(并解除分配)。
答案 2 :(得分:0)
ARC代表自动参考计数。
它接管用户维护对象引用计数的责任。
这就是为什么你不能再打电话给[obj retain]
或[obj release]
了。
一旦参考计数器达到0,它就会为您释放它。
请记住,它不是垃圾收集器。如果您不小心,有些情况下此机制可能会导致内存泄漏。但总的来说它的效果非常好。
答案 3 :(得分:0)
Does it release the object created when the method block completes or we should explicitly release by giving nil to reference?
答案是否。
在上面的情况中sampleView
保留计数未达到0,因为您将此作为参数传递给self
类。一旦所有强引用都被清除,其保留计数将降至0,之后才会释放。
您可以简单地将代码想象为RegViewController *sampleView = [[[RegViewController alloc] init] autorelease];