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