2012-03-08 64 views
0

我想聲明的是可以通過在類中的任何方法來訪問一個UInt32的變量UInt32的變量..如何聲明與全球級接入

所以其全球的類中的方法,但沒有任何其他類別。 ..

我試圖做這樣的.H

@interface EngineRequests : NSObject { 

    UInt32 dataVersion; 
} 

@property (copy) UInt32 dataVersion; 

但那不是工作..我得到就行了@property等錯誤..我甚至需要一個或者僅僅使用頂部的UInt32就可以。

回答

1

你可以嘗試

@interface EngineRequests : NSObject { 
@protected 
    UInt32 dataVersion; 
} 

@property (assign) UInt32 dataVersion; 
@end 

@implementation EngineRequests 

@synthesize dataVersion; 

// methods can access self.dataVersion 

@end 

但你並不真正需要的屬性,除非要授予外部訪問/控制。您可以在類接口中聲明UInt32 dataVersion,然後在沒有self.的實現中參考dataVersion。無論哪種方式,@protected都將阻止外部類直接訪問dataVersion

您是否閱讀過Objective-C Properties

初始化

EngineRequestsNSObject一個子類。因此,你可以(一般應該)覆蓋的NSObject-(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;

+0

完美的工作,說如果我有一個方法是通過參數初始化該UInt32 var,我該怎麼做? 我試過這個** - (void)initalizePacketVariables:(UInt32) {//...** 但是,這會導致錯誤.. – 2012-03-08 02:37:39

+0

已添加更新。您在評論中描述的方法也可以正常工作。 'init'是Cocoa的最佳實踐。 – QED 2012-03-08 02:44:01

+0

好涼爽..我會盡力並把它全部弄清楚。感謝您的幫助 – 2012-03-08 02:48:25

0

您只需在接口中聲明該變量以使其對所有類方法都可見。使用@property ....創建getter-setter將使其成爲類變量,並且它將在類之外可見。你必須這樣做。

@interface EngineRequests:NSObject的{

UInt32 dataVersion; 

}

罷了。