Objective c 对iVar中的类和对象感到困惑

Objective c 对iVar中的类和对象感到困惑,objective-c,ios,xcode,Objective C,Ios,Xcode,可能重复: 当一个类有一个属性但没有变量时,它意味着什么? 相反,我看到的是: @interface myClass : someClass @property (nonatomic,retain) UIButton* button; @end 在实施过程中: @synthesize button = _button; 那么谁是按钮 当这样声明时,@synthesis做什么? 这是否意味着该类现在有一个名为\u button的私有变量?我可以将\u按钮视为类的私有变量吗 这是否

可能重复:

当一个类有一个属性但没有变量时,它意味着什么? 相反,我看到的是:

@interface myClass : someClass

    @property (nonatomic,retain) UIButton* button;

@end
在实施过程中:

@synthesize button = _button;
那么谁是按钮

当这样声明时,
@synthesis
做什么?
这是否意味着该类现在有一个名为
\u button
的私有变量?我可以将
\u按钮
视为类的私有变量吗

这是否意味着类现在有一个名为_button的私有变量?我可以将_按钮视为类的私有变量吗


是的,这是Clang编译器的一个新功能-它自动为属性创建实例变量,如果属性的名称是自动生成的,则ivar具有
@private
访问级别,并且具有
\namwOfProperty
,在XCode 4.4及更高版本中,您不需要编写@synthesis它甚至比
@private
更受限制:合成ivar仅在synthesis指令所在的文件中可见。@JoshCaswell除了类别之外,这与
@private
不一样吗?对,类的一个类别中有一个
@private
ivar可用,但合成变量不可用。