Как объявить переменную 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;

}

ничего более.

Другие вопросы по тегам