Я видел readwrite на int, BOOL и так далее, как неатомический, присваивать.
Я немного смущен этим. Я знаю, что на не-родных объектах мы обычно делаем неатомические, сохраняем.
Я видел readwrite на int, BOOL и так далее, как неатомический, присваивать.
Я немного смущен этим. Я знаю, что на не-родных объектах мы обычно делаем неатомические, сохраняем.
Вот короткий ответ:
atomic
vs nonatomic
в первую очередь гарантирует, что полные значения возвращаются из синтезированных геттеров и что полные значения записываются синтезированными сеттерами (по умолчанию атомный).
readwrite
vs readonly
определяет, имеет ли синтезированное свойство синтезированный аксессуар или нет (readwrite имеет setter и является значением по умолчанию, readonly does not).
assign
vs retain
vs copy
определяет, как синтезированные аксессоры взаимодействуют с схемой управления памятью Objective-C:
assign
по умолчанию и просто выполняет назначение переменнойretain
указывает, что новое значение должно быть отправлено - получить при назначении и отправленное старое значение -release
copy
указывает, что новое значение должно быть отправлено -copy при назначении и отправлено старое значение -release
. readwrite
означает, что существуют как геттер, так и сеттер; напротив, readonly
. Обычно единственный раз, когда вы явно объявляете свойство readwrite
, находится в расширении класса для класса, в котором публичный интерфейс объявляет свойство readonly
- так, чтобы он публично доступен только для чтения, но внутри вы можете как получать, так и устанавливать.
После прочтения столь многих статей, сообщений SO и демонстрационных приложений, чтобы проверить атрибуты свойств Variable, я решил объединить все данные атрибутов
поэтому ниже приведена подробная ссылка на статью, в которой вы можете найти выше упомянутые все атрибуты, которые вызывающе помогут вам. Большое спасибо всем людям, которые дают лучшие ответы здесь!
Пример:
@property (nonatomic, retain) NSString *name;
@synthesize name;
Пример:
@property (nonatomic, assign) NSString *address;
@synthesize address;
только для чтения
Пример:
@property (nonatomic, readonly) NSString *name;
@synthesize name;
Пример:
@property (nonatomic, readwrite) NSString *name;
@synthesize name;