self.someProp = someObject;
但是当你宣布某事为
时@synthesize someProp = _someProp;
并且您尝试在对象的子类中访问_someProp,我收到一条错误,指出_someProp尚未声明。但如果我做self.someProp我不会得到错误。有人可以解释这些情景中的差异吗?感谢。
答案 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方法。这些方法名为someProp
和setSomeProp
。这些方法获取并设置一个名为_someProp
的私有变量,这就是您的子类无法使用该名称的原因。