атрибуты управления памятью
retain
: значения отправляются в виде сообщения retain
, когда значение установлено. Этот атрибут вы будете использовать чаще всего.
copy
: значение отправляется в виде сообщения copy
, а возвращаемое значение сохраняется.
Для свойств, которые используют retain
или copy
, вы должны release
указать объект в dealloc
, в противном случае объект будет вытекать.
assign
: assign
просто копирует значение. В случае объектов это означает копирование адреса объекта (сохранение объекта не отправляется объекту). Вы должны использовать это, когда retain
создаст цикл сохранения. Примерами циклов сохранения являются отношения родитель / потомок, где оба объекта требуют ссылки на другой (родитель должен retain
дочерний элемент, дочерний элемент должен assign
родительский объект). Объект должен assign
своих делегатов по той же причине. Вы также должны использовать assign
для значений примитивов (char
, int
, long
и т. Д.). retain
и copy
не будут работать с примитивами, потому что примитивы не являются объектами.