如果一个类成员不需要getter或setter函数那么说它们属性并合成它们没有意义吗?
答案 0 :(得分:2)
嗯,是的,但是即使属性不在实现之外设置,属性通常也会对实现本身有所帮助。
例如,假设你有
@interface SomeObject : NSObject {
NSThing *thing;
}
@end
@implementation SomeObject
- (id)init {
if((self = [super init]))
thing = [[NSThing someThing] retain];
return self;
}
- (void)someMethod {
if(thing)
[thing release];
thing = [[NSThing someOtherThing] retain];
}
// etc etc
@end
为什么您不想再检查是否已分配thing
,发布thing
,将其设置为其他内容,然后再次retain
,只需执行操作即可:
- (id)init {
if((self = [super init]))
[self setThing:[NSThing someThing]];
return self;
}
- (void)someMethod {
[self setThing:[NSThing someOtherThing]];
}
如果您不希望在班级之外访问这些属性,则可以使用类别
@interface SomeObject ()
@property (retain) NSThing *thing;
@end
<。>在您的.m文件中。