为什么我不能访问自动合成的ivar?

时间:2012-10-23 01:38:46

标签: objective-c instance-variables synthesize declared-property

我一直在阅读使用最新版本的Xcode你甚至不需要使用synthesize来生成ivar,getters和setter,Xcode本身会为你处理这个并为你创建类似_youIvarName的东西,但是在尝试之后这个我无法完成这项工作。

即使我声明我的属性,当我尝试访问这些_yourVarName时,Xcode表示这样的变量不存在。

例如

标题文件:

@interface ComplexNumber : NSObject
@property  double realPart;
@property  double imaginaryPart;

实现:

#import "ComplexNumber.h"

@implementation ComplexNumber


-(double)modulus
{
    return sqrt(_realPart*_realPart + _imaginaryPart*_imaginaryPart);
}

-(void)setRadius:(double)aRadius phase:(double)aPhase
{
    [self setRealPart] = aRadius * cos(aPhase);
    self.imaginaryPart = aRadius * sin(aPhase);
}

-(void)print
{
    NSLog(@"%g + %gi", realPart, imaginaryPart);
}

这些试图都没有尝试访问那些_yourIvar工作......关于我在这里没有抓到的任何线索?

编辑:

我的主要问题是,如果我宣布一个@property是Xcode会自动生成getter,setter和实例变量(使用前导下划线,_myVar)而不需要使用@synthesize?这是我在stackoverflow上阅读的内容,我不确定它是否真的有用。

1 个答案:

答案 0 :(得分:1)

几乎所有东西看起来都应该有效。一行无效的目标-C是

[self setRealPart] = aRadius * cos(aPhase);

应该是

[self setRealPart:aRadius * cos(aPhase)];

这可能是你看到的错误吗?