@synthesize someProp = _someProp在子类中做了什么

时间:2012-02-23 20:08:10

标签: iphone objective-c

我对某事感到困惑。所以我理解做

之类的内存管理部分
self.someProp = someObject;

但是当你宣布某事为

@synthesize someProp = _someProp;

并且您尝试在对象的子类中访问_someProp,我收到一条错误,指出_someProp尚未声明。但如果我做self.someProp我不会得到错误。有人可以解释这些情景中的差异吗?感谢。

2 个答案:

答案 0 :(得分:3)

它基本上创建了以下代码:

@implementation myClass
{
    @private
    id _someProp; // notice it's a private implementation property
}

-(id) someProp
{
    return _someProp;
}

-(void) setSomeProp:(id) prop
{
   [_someProp release];
   _someProp = [prop retain];
}

@end

私有实现属性意味着它不能在类外部访问,并且不是接口的一部分,而是实现的一部分。

答案 1 :(得分:1)

@synthesize someProp = _someProp;在您的班级中创建getter和setter方法。这些方法名为somePropsetSomeProp。这些方法获取并设置一个名为_someProp的私有变量,这就是您的子类无法使用该名称的原因。