@synthesize something= _something;Autocroice变量_something _something?
-
13-12-2019 - |
题
我了解@synthesize为实例变量的getter和setters自动分区。当我指定= _something部分时,我理解这会通知编译器/运行时我希望它使用Getter / Setter的特定备份变量。
与我的getter / setter一起使用_something变量,或者我应该在我的界面/实现文件中定义该实例变量吗?
解决方案
问题是,在实现中的标题文件和@synthesize中的@property是否创建了底层的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位程序,或者您正在使用64位程序。您正在使用现代运行时,否则您正在使用传统运行时,并需要头文件中的额外行。由于已经发布了一些错误信息,这里是一个参考: Objective-C运行时编程指南
其他提示
抱歉,误读了你的一部分问题。如果你用下划线做@synthesize部分,你都很好。无需明确定义IVAR。
不隶属于 StackOverflow