我正在创建一堆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,那将是非常可怕的。
经验法则是,如果你需要一些东西来维持生命,你就要保留它。如果你仍然需要,就永远不要释放它。指望其他阶层来保留它是不可靠的。如果你想让控制器留在身边,不要释放它。