今天在 Xcode 4.6 中遇到了这个问题,这让我大吃一惊。我正在使用自动合成的属性(但手动合成没有区别)。
@interface TestA : NSObject
@property (strong) id foo;
@end
#import "TestA.h"
@interface TestB : TestA
- (id)initWithFoo:(id)foo;
@end
@implementation TestB
- (id)initWithFoo:(id)foo
{
self = [super init];
if (self)
{
_foo = foo; // Xcode says _foo is not defined.
//self.foo = foo; // This does work though.
}
return self;
}
@end
我可以很好地访问_foo
in的实现,但不能在's 中访问。我可以通过将其作为 ivar 声明来解决此问题,但我认为我不必这样做。这里发生了什么?TestA
TestB
id _userInfo
TestA.h