Обновленный ответ на измененную документацию
Информация теперь распределена по нескольким руководствам в документации. Вот список обязательной литературы:
Ответ на этот вопрос теперь полностью зависит от того, используете ли вы приложение, управляемое ARC (современный стандарт по умолчанию для новых проектов), или принудительно управляете памятью вручную.
Assign vs.Weak - используйте assign, чтобы установить указатель свойства на адрес объекта, не сохраняя его или иным образом не курируя; используйте weak, чтобы свойство указывало на nil автоматически, если назначенный ему объект освобожден. В большинстве случаев вы захотите использовать weak, чтобы не пытаться получить доступ к освобожденному объекту (незаконный доступ к адресу памяти - " EXC_BAD_ACCESS
"), если вы не выполните надлежащую очистку.
Сохранение или копирование - объявленные свойства по умолчанию используют сохранение (так что вы можете просто опустить его вообще) и автоматически управляют счетчиком ссылок на объект независимо от того, назначен ли другой объект свойству или для него установлено значение nil; Используйте копию для автоматической отправки вновь назначенному объекту -copy
сообщения (которое создаст копию переданного объекта и вместо этого назначит эту копию свойству - полезно (даже требуется) в некоторых ситуациях, когда назначенный объект может быть изменен после того, как он будет установлен как свойство некоторого другого объекта (что будет означать, что модификация / мутация будет применяться и к этому свойству).