Есть два новых атрибута управления памятью для свойств, введенных ARC, strong
и weak
.
Кроме copy
, который, очевидно, является чем-то совершенно другим, есть ли различия между strong
vs retain
и weak
vs assign
?
Насколько я понимаю, разница здесь только в том, что weak
присвоит указателю nil
, а assign
- нет, что означает, что программа аварийно завершит работу, когда я пошлю сообщение указателю после его освобождения. Но если я использую weak
, этого никогда не произойдет, потому что отправка сообщения на nil
ничего не даст.
Я не знаю о каких-либо различиях между strong
и retain
.
Есть ли причины, по которым я должен использовать assign
и retain
в новых проектах, или они вроде как устарели?