Objective c 为什么可以';我不能进入自动合成ivar吗?

Objective c 为什么可以';我不能进入自动合成ivar吗?,objective-c,instance-variables,synthesize,declared-property,Objective C,Instance Variables,Synthesize,Declared Property,我一直在阅读最新版本的Xcode,您甚至不需要使用合成来生成ivar、getter和setter,Xcode本身为您处理这些,并为您创建类似于_youIvarName的东西,但是在尝试了这个之后,我无法实现这一点 即使我声明了我的属性,当我试图访问这些时,yourVarName Xcode说这样的变量不存在 范例 头文件: @interface ComplexNumber : NSObject @property double realPart; @property double imagi

我一直在阅读最新版本的Xcode,您甚至不需要使用合成来生成ivar、getter和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);
}
所有这些都没有试图访问那些你的Ivar有效的。。。关于我没有掌握的东西有什么线索吗

编辑:


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

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

[self setRealPart] = aRadius * cos(aPhase);
而应该是

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

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

您的项目的编译器构建设置是否设置为LLVM 4.1?嗯,我没有更改任何与此相关的内容(我甚至不知道何时可以更改这样的设置)。您对Xcode 4.5的理解是正确的,但我不确定您为什么不能使用下划线访问ivar。您是否接受了项目的所有建议更新(通常在单击项目时提供)?此外,请尝试单击项目设置上的“验证设置”,以确保您使用的是最新的编译器。我使用的是Xcode 4.5,我相信我已经更新了所需的所有内容。。。如果这个肯定是正确的,我真的不明白有什么错。你能给我一个如何正确使用的例子吗?我的意思是,
@property
自动生成IVAR而无需
@synthesis
的这个功能我已经重新启动了Xcode,现在一切都正常了!你是对的:)非常感谢:DD,是的,那行是我的错别字,我已经修好了!我很难理解如何使用ivar、
@property
、getter和setter@_@