是否需要在dealloc中(甚至在IOS 3.0之后)将插座变量设置为nil?

| 在谈论插座时,在Apple的文档中。 它说   在您的自定义视图控制器类中   您可以实现vi​​ewDidUnload到   调用您的访问器方法进行设置   网点为零。 我能理解这一点,因为在这种情况下,调用accessor方法来设置nil会释放该对象,并将指针设置为nil可以防止访问无效点,这可能导致崩溃。 但是之后,它说:   注意:在iOS 3.0之前的版本中,   viewDidUnload方法不可用。   相反,您应该将网点设置为零   在setView:中,如下所示   例:
- (void)setView:(UIView *)aView {
    if (!aView) { // View is being set to nil.
        // Set outlets to nil, e.g.
        self.anOutlet = nil;
    }
    // Invoke super\'s implementation last.
    [super setView:aView];
}
     另外,由于细节   在dealloc的实现   UIViewController,您还应该设置   出口变量在dealloc中为nil:
- (void)dealloc {
    // Release outlets and set outlet variables to nil.
    [anOutlet release], anOutlet = nil;
    [super dealloc];
}
1)为什么即使在dealloc中,我们也需要设置nil? (我认为dealloc是对象生命周期的最后一步,没有其他人可以通过该对象访问出口。) 2)我们是否仍需要在iOS 3.0或更高版本中设置nil?(我发现自动生成的代码Xcode不会将nil设置为出口变量,而只释放它们。)     
已邀请:
是的,您无需在
dealloc
中将网点设置为零。只要确保释放它们即可。     

要回复问题请先登录注册