Как объявить переменную UInt32 с глобальным доступом к классу
Я пытаюсь объявить переменную UInt32, к которой может получить доступ любой метод в классе..
так что это глобально для методов классов, но не для любого другого класса...
Я пытаюсь сделать это в.h
@interface EngineRequests : NSObject {
UInt32 dataVersion;
}
@property (copy) UInt32 dataVersion;
но это не работает.. Я получаю сообщение об ошибке в строке @property и т.д.. мне это даже нужно, или это нормально, просто использовать UInt32 вверху.
2 ответа
Вы могли бы попробовать
@interface EngineRequests : NSObject {
@protected
UInt32 dataVersion;
}
@property (assign) UInt32 dataVersion;
@end
@implementation EngineRequests
@synthesize dataVersion;
// methods can access self.dataVersion
@end
Но вам на самом деле не нужна собственность, если вы не хотите предоставлять / контролировать внешний доступ. Вы могли бы просто объявить UInt32 dataVersion
в интерфейсе класса, а затем ссылка dataVersion
в реализации без self.
В любом случае, @protected
будет препятствовать доступу внешних классов dataVersion
непосредственно.
Вы читали о свойствах Objective-C?
инициализация
Ваш EngineRequests
это подкласс NSObject
, Таким образом, вы можете (как правило, должны) переопределить NSObject
"s -(id)init
метод, вроде такой:
-(id)init {
self = [super init];
if (self != nil) {
self.dataVersion = 8675309; // omit 'self.' if you have no '@property'
}
return self;
}
Или создайте свой собственный -(id)initWithVersion:(UInt32)version;
,
Вам нужно объявить переменную только внутри интерфейса, чтобы сделать ее видимой для всех методов классов. Создание getter-setter с использованием @property.... сделает переменную класса и будет видна вне класса. Вы должны сделать именно это.
@interface EngineRequests: NSObject {
UInt32 dataVersion;
}
ничего более.