Cocoa touch 我应该为控制器类变量使用@property吗?

Cocoa touch 我应该为控制器类变量使用@property吗?,cocoa-touch,Cocoa Touch,问题是我应该为视图控制器使用属性吗 考虑以下情况: 我在父类中有一个视图控制器对象:MyViewController*myVC 我没有在父类的dealloc方法中释放此视图控制器 我使用的视图控制器如下所示: // Allocate and Initialize view controller myVC = [[MyViewController alloc] initWithNibName:@"newView" bundle:nil]; // Push View Controller [sel

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

考虑以下情况:

  • 我在父类中有一个视图控制器对象: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;
    

  • 这种方法有什么问题吗

    布拉德·拉森说的话。除非在所属类的dealloc方法中释放myVC,否则myVC将泄漏。将其设置为属性不会影响此行为(itemEditVC变量来自何处?)将其作为属性公开的唯一原因是,如果外部类需要访问此变量,并且您希望在修改此属性时确保正确的释放/保留语义。

    在修订的代码中,myVC由导航控制器保留,当它从堆栈中弹出时将被释放(并解除分配)。如果这是您正在寻找的行为,那么是的,这段代码很好


    如果您需要myVC挂起以供以后重用或做其他事情,那么请将版本移动到父类的dealloc方法,并将赋值删除为nil。

    我不理解您的问题。itemEditVC应该是myVC吗?属性到底从何而来?很抱歉,修改过的代码片段。myVC是在推送之后立即释放的变量。