怎么用下划线合成不起作用?

时间:2012-04-30 23:52:06

标签: objective-c ios

我正在尝试使用

在我的iPhone应用程序中合成变量
@synthesize samples=_samples;

samples声明为

@property (strong, nonatomic) NSMutableArray *samples;

但是,我收到一个构建错误,声称_samples不存在。为什么呢?

2 个答案:

答案 0 :(得分:2)

您是否尝试从实施文件外部访问_samples?通过@synthesize生成的ivars无法被调用@synthesize的实现之外的任何内容查看。所以如果你这样做......

MyView *myView = [[MyView alloc] init];
myView._sample;

......你会看到一个错误。有关详细信息,请参见此处:https://stackoverflow.com/a/8511046/251012

编辑:以下所有内容都是错误的。左,以便评论有意义

你是否宣布你的ivar并且名字拼写正确吗?

当你说类似......

@synthesize foo = _foobar;

...您需要确保在界面中设置实例变量,如此...

@interface MyObject : NSObject
{
    NSString *_foobar;
}
@property(nonatomic,strong) NSString *foo;
@end

要明确的是,当您说foo=_foobar时,foo是自动生成getter / setter的基本名称,而_foobar是ivar的名称。如果没有声明ivar,@property将自动生成一个相同的名称。

答案 1 :(得分:1)

同样的代码正在我这边工作。尝试重新启动xcode并重建项目。