为什么要释放已经设置为nil的属性?

Tom*_*ert 6 objective-c ios

以下是Apple教程中视图控制器中的两种方法:

- (void)viewDidUnload {
    self.eventsArray = nil;
    self.locationManager = nil;
    self.addButton = nil;
}

- (void)dealloc {
    [managedObjectContext release];
    [eventsArray release];
    [locationManager release];
    [addButton release];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

这个dealloc方法不能缩短到以下几点吗?如果没有,为什么不呢?

- (void)dealloc {
    [managedObjectContext release];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

bad*_*err 5

- (void)viewDidUnload 不保证被调用,所以你应该总是在dealloc中释放东西.

看到这个问题,找出它何时被调用,以及它应该做什么.