制作类成员属性并合成它们

时间:2010-08-14 01:46:21

标签: objective-c cocoa cocoa-touch

如果一个类成员不需要getter或setter函数那么说它们属性并合成它们没有意义吗?

1 个答案:

答案 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文件中。