2010-05-24 4 views
0

Я ищу синтаксис геттера/сеттера. Что такое сеттер и который является получателем?@property object-c синтаксис

Является ли атрибут readwrite получателем?
Является ли назначение сеттера?

 
@interface SomeClass : NSObject 
{ 
    NSString *str; 
    NSDate *date; 
} 

@property (readwrite, assign) NSString *str; 
@property (readwrite, assign) NSDate *date; 

ответ

6

Также не используется геттер или сеттер. readwrite контролирует, генерируется ли метод набора или только геттер, а assign определяет схему управления памятью (в этом случае переменные не сохраняются, что, вероятно, является ошибкой).

Для полного синтаксиса объявления собственности вы можете посмотреть the relevant docs.

+0

Эта документация очень хорошо, хотя я не нашел, могу ли я поменять атрибуты, как: @property (копирование, чтение и запись) NSString * значение; @property (readwrite, copy) Значение NSString *; – okami

+0

@okami: вы можете поменять порядок, но есть порядок, в котором они обычно записаны и отклоняются от этого, что может быть менее полезным для других людей, просматривающих ваш код. – corprew

+0

Ссылка сломана. :( – devios1

2

Вы должны проверить this page, это объяснит все.

= ReadWrite свойства можно считывать и записывать

Присвоить = это свойство, которое не нужно исм подсчитано. (Альтернатива является «сохранить», что означает, что значения этого свойства retain ред при установке и release d, когда переписаны

+0

ссылка сломана, и, к сожалению, «страница» не очень хорошая привязка. –

2

Ни код вы вывесили не является декларация интерфейса,.. Методы получения и установки идут в @implementation контексте, и обычно создаются с помощью @synthesize директивы, как в

@synthesize str; 
@synthesize date; 

Есть ряд признаков, которые могут пойти после имущественной декларации. в этом случае readwrite указывает, что значение свойства можно установить (с помощью синтаксис someObject.str = @"foo"), противоположное - readonly, что означает, что значение свойства не могут быть установлены. assign - против copy или retain - означает, что значение свойства устанавливается напрямую, а последние два создают копию значения и сохраняют значение соответственно.

2

Геттер и сеттер - это два метода, которые автоматически создаются при использовании @property. По умолчанию получатель будет иметь то же имя, что и свойство, у установщика будет имя с префиксом set и суффикс :; например, для свойства str, вы могли бы позвонить [someobj str], чтобы получить str, и [someobj setStr: somestr].

Атрибуты readwrite и assign предоставляют некоторую информацию о том, как этот геттер и сеттер должны быть определены, если вы используете @synthesize для создания определений для вас. readwrite просто говорит, что вам разрешено установить свойство, а assign говорит, как будет задано свойство. См. the documentation для получения дополнительной информации.

Смежные вопросы