保留一个UIViewControllers的.view,然后释放VC,VC得到dealloc'd?

时间:2012-03-15 02:01:19

标签: objective-c ios uiviewcontroller

我正在创建一堆UIViewControllers来管理多个自定义对象。虽然我不再需要直接访问`UIViewController'来创建它。我想将viewController.view添加到我的Master 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的dealloc。我想如果我保留了一个viewController的View,ViewController本身也会被保留?

谢谢,

1 个答案:

答案 0 :(得分:2)

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

经验法则是,如果你需要一些东西来保持活力,你就会保留它。如果您仍然需要它,请不要释放它。指望其他一些类来保留它是不可靠的。如果您希望控制器保持不变,请不要将其释放。

相关问题