Вы можете использовать либо retain
, либо assign
.
Конечно, если вы используете retain
, вы должны установить свойство на nil
или освободить его объект в viewDidUnload
и dealloc
.
Причина, по которой некоторые люди предпочитают retain
, заключается в том, что это свойство все еще действует в viewDidUnload
. Поэтому, если вам нужно выполнить другую очистку, и эта очистка требует, чтобы представление все еще существовало, вы можете сделать это в viewDidUnload
.
Если вы используете assign
, вам не нужно устанавливать для свойства nil
в viewDidUnload
и dealloc
(хотя это будет хорошей практикой). Однако к тому времени, как вы получите viewDidUnload
, представление уже было освобождено, поэтому вы не сможете использовать его в этот момент для другой очистки. Вместо этого вы должны переопределить didReceiveMemoryWarning
, чтобы выполнить очистку перед вызовом [super didReceiveMemoryWarning]
.
В iOS 5.0 вы можете выполнить очистку в viewWillUnload
вместо переопределения didReceiveMemoryWarning
.