我应该将@property用于Controller Classes变量吗?

时间:2009-01-22 11:18:08

标签: cocoa-touch

问题是我应该使用我的视图控制器的属性吗?

考虑以下情况:

  1. 我的父类中有一个视图控制器对象:MyViewController * myVC;

  2. 我不会在父类的 dealloc 方法中发布此视图控制器。

  3. 我使用这样的视图控制器:

    // 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;
    
  4. 这种方法有问题吗?

2 个答案:

答案 0 :(得分:1)

Brad Larson说的话。 myVC会泄漏,除非你在拥有类的dealloc方法中释放它。使它成为一个属性不会影响这种行为(itemEditVC var来自哪里?)将它作为属性公开的唯一理由是,如果外部类需要访问此变量,并且您希望确保正确的释放/保留语义此属性已修改。

答案 1 :(得分:1)

在修改后的代码中,导航控制器会保留myVC,并在弹出堆栈时释放(并解除分配)。如果这是您正在寻找的行为,那么这个代码就可以了。

如果您需要myVC在以后重复使用或其他内容,请将版本移至父类的dealloc方法并将分配删除为nil。

相关问题