0

クラス内の任意のメソッドからアクセスできるUInt32変数を宣言しようとしています。

したがって、クラスメソッドに対してはグローバルですが、他のクラスに対してはグローバルではありません。

私は.hでこのようにしようとしています

@interface EngineRequests : NSObject {

    UInt32 dataVersion;
}

@property (copy) UInt32 dataVersion;

しかし、それは機能していません。@ propertyなどの行でエラーが発生しています。それが必要なのか、それとも上部のUInt32を使用するだけで問題ないのでしょうか。

4

2 に答える 2

1

あなたは試すことができます

@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.@protecteddataVersion

Objective-C Propertiesを読みましたか?

初期化

あなたEngineRequestsは のサブクラスですNSObjectNSObjectそのため、次のようにの-(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;

于 2012-03-08T02:32:45.920 に答える
0

変数をすべてのクラス メソッドから見えるようにするには、インターフェイス内でのみ変数を宣言する必要があります。@property.... を使用して getter-setter を作成すると、クラス変数になり、クラスの外部で表示されます。これだけしなければなりません。

@interface EngineRequests : NSObject {

UInt32 dataVersion;

}

これ以上何もない。

于 2012-03-08T02:35:45.840 に答える