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