保留UIViewControllers的.view,然后释放VC,VC得到交易?



我正在创建一堆UIViewControllers来管理几个自定义对象。尽管我真的不需要从创建"UIViewController"的地方直接访问它了。我想将viewController.view添加到主UIViewController的视图中。然后我释放subViewController。SubViewController在中有一个手势识别器,当我去执行手势时,我会收到一条发送到已解除分配实例的消息。

这是我的密码。

[...snip...]
    for (int elementForPageTypeIndex = 0 ; elementForPageTypeIndex < elementsOnPage; elementForPageTypeIndex ++){

            IoUIElementPickerElementButtonViewController * element = [[IoUIElementPickerElementButtonViewController alloc] initWithNibName:@"IoUIElementPickerElementButtonViewController" bundle:nil];
            pageColumn = (elementForPageTypeIndex)%2 ;
            pageRow = roundf((elementForPageTypeIndex)/2);
            CGRect elementFrame= CGRectMake(kElementPickerColumnLeftOffset + (element.view.frame.size.width + kElementPickerColumnSeperation)*pageColumn + pageIndex*kElementPickerColumnPageOffset,
                                            kElementPickerRowTopOffset +  (kElementPickerRowSeperation + element.view.frame.size.height) * pageRow,
                                            element.view.frame.size.width,
                                            element.view.frame.size.height);
            [element.view setFrame:elementFrame];
            SysCDElement *ourCDElement = [elementsForPage objectAtIndex:elementForPageTypeIndex + maxElementsPerPages * pageIndex];
            [scrollViewContent addSubview:element.view];
            [element release];
    }
[...snip...]

发布后,element的解除锁定立即运行。我想,如果我保留了viewController的视图,那么viewController本身也会被保留吗?

谢谢,

没有。如果保留UIViewController的视图也神奇地保留了UIViewController,那将是非常可怕的。

经验法则是,如果你需要一些东西来维持生命,你就要保留它。如果你仍然需要,就永远不要释放它。指望其他阶层来保留它是不可靠的。如果你想让控制器留在身边,不要释放它。

最新更新