Objective c 是否“合成某物”=\u某物;是否也自动创建变量?

Objective c 是否“合成某物”=\u某物;是否也自动创建变量?,objective-c,syntax,ivar,Objective C,Syntax,Ivar,我知道@synthesis自动为实例变量创建getter和setter。当我指定=\u something部分时,我知道这会通知编译器/运行时我希望它为getter/setter使用特定的支持变量 Objective-C是否与我的getter/setter一起自动创建了_something变量,或者我是否应该在接口/实现文件中定义该实例变量?抱歉,误读了您问题的一部分。如果你在@synthesis部分加上下划线,你就一切都好了。无需明确定义ivar。问题在于头文件中的@property和实现中的

我知道@synthesis自动为实例变量创建getter和setter。当我指定=\u something部分时,我知道这会通知编译器/运行时我希望它为getter/setter使用特定的支持变量


Objective-C是否与我的getter/setter一起自动创建了_something变量,或者我是否应该在接口/实现文件中定义该实例变量?

抱歉,误读了您问题的一部分。如果你在@synthesis部分加上下划线,你就一切都好了。无需明确定义ivar。

问题在于头文件中的@property和实现中的@synthesis是否创建了基础ivar,或者是否必须在头文件中列出ivar。例如,在头文件中:

@interface SomeClass : NSObject {
    NSString *_someString;    // Is this needed???
}
@property NSString *someString;
在实施过程中:

@synthesize someString = _someString;

答案是,这取决于您使用的是传统运行时还是现代运行时。在iOS中,您总是使用现代运行时,因此您永远不需要NSString*_somestring行,但这个问题是关于Mac OS X的。对于Mac OS X,如果您在Mac OS X 10.5或更高版本上使用64位程序,则您使用的是现代运行时,否则您使用的是传统运行时,并且需要在头文件中增加一行。由于发布了一些错误信息,这里有一个参考:。

这是不正确的。这个变量是作为合成语句的一部分为您制作的。非常感谢您澄清这个问题。。关于@synthesis如何工作,似乎有很多困惑。