0

我有以下对象:

@interface Foo : NSObject
@property (readonly, strong) NSString *someVar;
@end

@implemtation Foo
@sythensize someVar = _someVar;
@end

然后我将其子类化:

@interface Bar : Foo
-(id)initWithString:(NSString *)string;
@end

@implementation Bar
-(id)initWithString:(NSString *)string {
  _someVar = string;
}
@end

但我得到一个“使用未声明的标识符 _someVar”..... 为什么 Bar 不知道 foo 的实例变量 _someVar ?

4

1 回答 1

1

始终使用 getter/setter。低级/直接访问仅在寻求十亿分之一秒的性能改进时才合适,在这种情况下,我质疑您是否应该完全放弃 Obj-C 并改用 C。

这是我的做法:

@synthesize someVar;

-(id)initWithString:(NSString *)string {
  self.someVar = string;
}

或者,如果我有充分的理由不使用访问器方法,那么。我根本不使用@synthesize。

此外,在最新版本的 Xcode 中,您可以跳过该@synthesize行。

于 2012-09-09T18:58:43.030 回答