2012-04-15 2 views
1

Я читал о свойствах и в каждом учебнике это выглядело так:свойства в Obj-C

@interface SomeClass : NSObject{ 

    NSString* SomeString; 
} 

@property (strong, nonatomic) NSString* SomeString; 

, но все прекрасно работает даже тогда, когда линия NSString * Строка; пропущен в параметрах класса.

Почему это должно быть написано?

ответ

3

В objetive-c 2.0 @property вместе с командой @synthesize автоматически создаст переменные экземпляра (если вы этого не сделали). Это своего рода короткий разрез.

Когда вы удаляете NSString* SomeString; из ваших «параметров класса» (iVars), поведение вашего приложения не изменится, потому что компилятор автоматически добавит переменную экземпляра в ваш файл заголовка.

Обновление 1: благодаря информации Jenox, я исправил свой ответ.

+1

wOOt, что-то не так принято: O '@ sythesize' создает ivar, а не' @ property' –

+0

'@synthesize prop = ivar;' создает ivar 'ivar' и' @synthesize prop; 'equals' @ синтезировать prop = prop; ' –

+0

Хорошо, это довольно крутая вещь. Я тоже этого не знал. благодаря :-) – Tobi

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