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