今日Xcode4.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
が、のではアクセスできません。ivar宣言として入れることでこれを修正できますが、そうする必要はないと思いました。ここで何が起きてるの?TestA
TestB
id _userInfo
TestA.h