问题是我应该使用我的视图控制器的属性吗?
考虑以下情况:
我的父类中有一个视图控制器对象:MyViewController * myVC;
我不会在父类的 dealloc 方法中发布此视图控制器。
我使用这样的视图控制器:
// Allocate and Initialize view controller
myVC = [[MyViewController alloc] initWithNibName:@"newView" bundle:nil];
// Push View Controller
[self.navigationController pushViewController:myVC animated:YES];
// Release memory
[myVC release];
myVC = nil;
这种方法有问题吗?
答案 0 :(得分:1)
Brad Larson说的话。 myVC会泄漏,除非你在拥有类的dealloc方法中释放它。使它成为一个属性不会影响这种行为(itemEditVC var来自哪里?)将它作为属性公开的唯一理由是,如果外部类需要访问此变量,并且您希望确保正确的释放/保留语义此属性已修改。
答案 1 :(得分:1)
在修改后的代码中,导航控制器会保留myVC,并在弹出堆栈时释放(并解除分配)。如果这是您正在寻找的行为,那么这个代码就可以了。
如果您需要myVC在以后重复使用或其他内容,请将版本移至父类的dealloc方法并将分配删除为nil。