Единственная разница между weak
и assign
состоит в том, что если объект, на который указывает свойство weak
, освобожден, то значение указателя weak
будет установлено на nil
, так что вы никогдарискуют получить доступ к мусору.Если вы используете assign
, этого не произойдет, поэтому, если объект освобождается из-под вас и вы пытаетесь получить к нему доступ, вы получите доступ к мусору.
Для объектов Objective-C, если выв среде, где вы можете использовать weak
, тогда вы должны использовать его.