statusText
- это UILabel
в вашем примере кода
- Это
IBOutlet
или UILabel
?
Оба.
UILabel
- это тип (указатель на UILabel
компонент, который вы используете в графическом интерфейсе)
IBOutlet
помечает переменную для приложения Interface Builder, чтобы оно показывало его как Outlet. Во время компиляции IBOutlet компилируется, он определяется в NSNibDeclarations.h как:
#define IBOutlet
- Как работает
@property
(retain,nonatomic) UILabel
*statusText
?
Вы можете создавать методы доступа (методы получения / установки) для переменной вручную, не нужно использовать свойство. Вы можете просто получить UILabel *statusText
и реализовать свои методы получения / установки вручную.
Можно получить методы доступа, объявленные компилятором, определив переменную как @property
, а затем либо использовать @synthesize
для создания средств доступа в файле .m
, либо снова объявить средства доступа самостоятельно (вы можете переопределить средства доступа по умолчанию, которые будут сгенерированы )
Вы можете иметь свойство readwrite
или readonly
- это означает, что генерируется и метод установки, и метод получения, или только метод получения.
Вы можете использовать copy
, retain
или assign
для сеттера (подробнее об управлении памятью о копировании / сохранении / назначении оптонов дерева)
Есть несколько других опций, например неатомных / атомарных, которые связаны с генерацией мьютексов и блокировок переменных перед доступом и т. Д. (Подробнее о свойствах )
Например, если у вас есть переменная
NSString * string;
определяя его как свойство readwrite, а затем синтезируя, вы получаете компилятор, сгенерированный для вас:
@property (copy, readwrite) NSString * string
затем используя
@synthesize string;
генерирует что-то вроде:
- (NSString *) string
{
return string;
}
- (void)setString:(NSString *)str
{
NSString * copy = [str copy];
[string release];
string = copy;
}
- Означает ли это утверждение, что
statusText
является собственностью ???
Да, вы определили его как свойство, как описано выше.
Здесь есть пара понятий.
Определение переменной, определяя ее как IBOutlet для Interface Builder, объявляет переменные как свойства, чтобы компилятор генерировал для вас методы получения / установки, определяя тип методов получения / установки, таких как метод доступа, управление памятью и блокировка.
Я надеюсь, что это объясняет ваши вопросы, и если вы перейдете по ссылке, Apple найдет объяснение, которое, как мне кажется, вполне понятно о том, как использовать свойства.
Извините за ужасное форматирование ...