English 中文(简体)
我应该为控制器类变量使用@property吗?
原标题:
  • 时间:2009-01-22 11:18:08
  •  标签:

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

考虑以下情况:

  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;
    

这种方法有没有问题?

最佳回答

在您修改的代码中,我的VC被导航控制器保留,并且将在从堆栈中弹出时释放(并解除分配)。如果这是您要寻找的行为,那么是的,这段代码非常好。

如果您需要myVC在以后重复使用或其他用途,请将release移到您的父类dealloc方法中,并删除对nil的赋值。

问题回答

Brad Larson 所说的。如果不在拥有类的dealloc方法中释放它,myVC 将会泄漏。将其变为一个属性不会影响这个行为(并且 itemEditVC 变量来自哪里?)。将其暴露为属性的唯一原因是,如果外部类需要访问此变量,并且当修改此属性时要确保适当的释放/保留语义。





相关问题
热门标签