【发布时间】:2011-02-04 22:43:17
【问题描述】:
我倾向于只在我的类中使用属性,尤其是现在你可以在类扩展中声明属性,这要归功于现代的 Objective-C 2.0 运行时——我使用这个特性来创建“私有”属性。
我的问题是,是否有充分的理由再在类接口中声明 ivars。我更喜欢我的面向公众的接口尽可能简洁和干净,只显示我的类中相关的方面。
例如,我倾向于做以下事情:
MyClass.h:
@interface MyClass : NSObject
@property (nonatomic, copy) NSString * publicString;
@property (nonatomic, copy, readonly) NSString * readOnlyString;
@end
MyClass.m:
@interface MyClass ()
@property (nonatomic, copy, readwrite) NSString * readOnlyString;
@property (nonatomic, copy) NSString * privateString;
@end
@implementation MyClass
@synthesize publicString = publicString_;
@synthesize readOnlyString = readOnlyString_;
@synthesize privateString = privateString_;
- (void)init
{
self = [super init];
if (self != nil)
{
self.publicString = @"Public String";
self.readOnlyString = @"Read-Only String";
self.privateString = @"Private String";
}
return self;
}
- (void)dealloc
{
[publicString_ release];
[readOnlyString_ release];
[privateString_ release];
[super dealloc];
}
@end
抛开代码风格偏好不谈,像这样完全避免 ivars 有什么问题吗?
【问题讨论】:
标签: objective-c properties instance-variables