Xcode 5.1.1中没有自动下划线ivar

时间:2014-06-09 09:13:08

标签: ios xcode automatic-properties ivar synthesize

我刚注意到,出于某种原因,我似乎没有在我的iOS 7项目中自动创建下划线iVars,我想知道为什么会这样。我的设置:

MyClass.h

@property (readonly) NSNumber *aNumber;

MyClass.m

@interface MyClass ()
@property (readwrite, strong) NSNumber *aNumber;
@end

@implementation MyClass

(...)

- (NSNumber *)aNumber {
    return _aNumber;
}

- (void)setANumber:(NSNumber *)aNumber {
    _aNumber = aNumber;
}

@end

这导致使用未声明的标识符:' _aNumber'

为什么会这样?我认为下划线iVars总是自动合成?是因为我使用的类扩展吗?如果我放入@synthesize aNumber = _aNumber;它(显然)有效。

1 个答案:

答案 0 :(得分:3)

自动合成规则有一个例外。

如果覆盖属性的getter和setter,则必须手动合成属性。

自从自动合成出现以来,情况一直如此。

只需添加@synthesize行即可。