对于obj-c中的属性,我们是否需要声明实例变量?
例如,如果我的 .h 文件如下所示:
@interface MyClass : NSObject {
}
@property (nonatomic, retain) NSNumber *someId;
@property (nonatomic, retain) NSDate *expires;
@property (nonatomic, retain) NSString *someString;
...
可以吗?它可以编译并运行,这是“完成的事情”吗?或者我真的应该做以下事情:
@interface MyClass : NSObject {
NSNumber *someId;
NSDate *expires;
NSString *someString;
}
@property (nonatomic, retain) NSNumber *someId;
@property (nonatomic, retain) NSDate *expires;
@property (nonatomic, retain) NSString *someString;
...
如果我计划始终使用属性访问器,上述任何一种方式有什么区别吗?
@synthesize 是否负责为我创建实例变量?
你理解正确的是,@synthesize
负责创造ivars
为你。 (这是运行时的一项新功能,与 64 位 Mac 和 iOS 设备兼容。)
这样做的好处是,您可以在您的类扩展 http://www.friday.com/bbum/2009/09/11/class-extensions-explained/并将 ivars 完全隐藏在 .h 中,将接口与实现完全分离。
您还可以从 .h 中完全删除“{}”,使其变得非常干净。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)