我有以下对象:
@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?
答案 0 :(得分:1)
始终使用getter / setter。低水平/直接访问仅在寻求第二十亿次性能改进时才适用,在这种情况下,我会质疑你是否应该完全抛弃Obj-C并切换到只有C.
我是这样做的:
@synthesize someVar;
-(id)initWithString:(NSString *)string {
self.someVar = string;
}
或者,如果我有充分的理由不使用访问器方法,那么。我根本不使用@synthesize。
此外,在最新版本的Xcode中,您可以跳过@synthesize
行。