Какие значения по умолчанию для @property в iOS? - PullRequest
9 голосов
/ 27 апреля 2011

Каковы значения по умолчанию для @property в iOS?

Например, если я объявлю @property NSString * photographer;

это значение по умолчанию (назначить) или (сохранить) или что еще?

(атомарный, неатомный)?

Я не могу найти эту информацию в документации. спасибо

Ответы [ 2 ]

15 голосов
/ 27 апреля 2011

Я считаю значения по умолчанию (atomic, assign), однако вы не должны оставлять их пустыми.

Значение по умолчанию может измениться в любой момент, и вы пишете код, основанный на определении свойства.

Например, если вы полагаетесь на значение по умолчанию assign, и по какой-либо причине в будущем оно изменится на retain, тогда весь ваш код будет утекать.

И наоборот, если по умолчанию сохранено, и вы полагаетесь на него, и оно изменяется на присвоение, то ваш код будет аварийно завершать работу, когда вы неизбежно перепустите объект.

Не полагайтесь ни на какие значения по умолчанию, независимо от того, какими они могут быть.

Явно определите атрибуты ваших свойств.

0 голосов
/ 24 мая 2012

Свойства являются атомарными по умолчанию, так что синтезированные средства доступа обеспечивают надежный доступ к свойствам в многопоточной среде, то есть значение, возвращаемое из метода получения или устанавливаемое через установщик, всегда полностью извлекается или устанавливается независимо от того, какие другие потоки выполняются одновременно .

Если вы указываете strong, копируете или сохраняете и не указываете неатомарное, то в среде с подсчетом ссылок синтезированный метод доступа get для свойства объекта использует блокировку и сохраняет и автоматически высвобождает возвращаемое значение.

Я не думаю, что Apple изменит его в будущем, но, к сожалению, наиболее распространенным является неатомарный, поэтому вам, возможно, придется записать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...