0

我正在创建视图控制器,其中包含一些要显示的信息(图像、按钮、手势、文本等)并将它们添加到滚动中。

productsVCs = [[NSMutableArray alloc] init];

for (int i = 1; i <= [self.products count]; i++) {
    productsSingle *single = [[productosSingle alloc] init];
    single.view.frame = CGRectMake(x, y, 200, 148);
    single.delegate = self;
    [single setInfo:[self.products objectAtIndex:i-1]];
    [scroll addSubview:single.view];
    [productsVCs addObject:single];
}

正如你所看到的,我正在使用我分配的这些视图控制器做三件重要的事情,我写了我认为让 ARC 释放这些对象所需的内容。

1)设置代表。- 我必须将代表设置为零吗?

2)将视图添加为子视图。- 从超级视图中删除?

3) 将控制器添加到数组中。- 从阵列中移除?

我的问题是,这些视图控制器何时被释放?使用弧。谢谢您的帮助。

4

2 回答 2

0

当您的 ViewController(具有滚动视图)将被释放时,该对象productsSingle将被释放。

ARC 在编译时工作,因此 ARC 会为您插入对release对象的方法调用。当您将编译项目时,ARC 插入对release方法的调用,如下所示:

[single setInfo:[self.products objectAtIndex:i-1]];
[scroll addSubview:single.view];
[single release]; //ARC inserts this line
于 2012-09-03T19:19:36.050 回答
0

如果您使用 ARC,则不必担心释放对象,因为 ARC 会为您完成。您仍然可以在控制器中设置强持有的实例变量,以便在您的viewDidUnload方法中释放。

现在,当任何持有对它们的引用被释放时,您的视图控制器将被释放,在这种情况下,它将是应用程序本身或创建控制器的另一个控制器。如果您不持有对它的引用,那么只要您退出代码块,它就会被释放。

这是使用 ARC 的小指南

于 2012-09-03T19:20:15.793 回答