2011-05-18 109 views
0

我這裏in a SO best practices posting閱讀提示:何時委託設爲NULL

「如果你傳遞自己作爲一個代表到另一個對象,你的dealloc之前重置該對象的委託」 實例:

- (void)dealloc { 
    if (self.someObject.delegate == self) { 
     self.someObject.delegate = NULL; 
    } 
    self.someObject = NULL; 
    [super dealloc]; 
} 

聽起來很有道理,但我不知道在我需要做什麼的情況下。 例如,我有類似下面的圖控制器:

- (void) viewDidLoad { 
    myTextField.returnKeyType = UIReturnKeyDone; 
    myTextField.delegate = self; 
} 

請問I(我應該)設置委託爲NULL在這種情況下,例如:

- (void) dealloc { 

    if (self.myTextField.delegate == self) { 
     self.myTextField.delegate = NULL; 
    } 
    [myTextField release]; 
    [super dealloc]; 
} 
+3

值得注意的是,你應該使用nil而不是NULL。 [這個SO問題](http://stackoverflow.com/questions/557582/null-vs-nil-in-objective-c)有關於此事的一些討論 – 2011-05-18 21:59:41

回答

0

如果對象在做委託可能會被保留在其他地方,並且您不會將委託設置爲零,因此您的對象有可能會在dealloc之後被調用,這會顯示爲崩潰。在這個特定的情況下,你可能會好起來的,但它確實不會傷害任何事情。