我正在尝试声明一个可以被类中的任何方法访问的UInt32变量。
所以它的全局类方法,但不是任何其他类......
我试图在.h
中这样做@interface EngineRequests : NSObject {
UInt32 dataVersion;
}
@property (copy) UInt32 dataVersion;
但那不起作用..我在@property等行上遇到错误。我甚至需要那个或者只是在顶部使用UInt32也没关系。
答案 0 :(得分: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.
无论哪种方式,@protected
都会阻止外部类直接访问dataVersion
您是否已阅读Objective-C Properties?
的初始化强> 的
您的EngineRequests
是NSObject
的子类。因此,您可以(通常应该)覆盖NSObject
的{{1}}方法,例如:
-(id)init
或者创建自己的-(id)init {
self = [super init];
if (self != nil) {
self.dataVersion = 8675309; // omit 'self.' if you have no '@property'
}
return self;
}
。
答案 1 :(得分:0)
您需要仅在接口内声明变量,以使其对所有类方法可见。使用@property ....创建getter-setter将使其成为类变量,并且它将在类外部可见。你必须这样做。
@interface EngineRequests:NSObject {
UInt32 dataVersion;
}
仅此而已。