Objective-C成员变量赋值?

时间:2010-12-27 21:44:53

标签: objective-c getter-setter

我有一个带成员变量的objective-c类。我正在为每个人创造吸气剂和制定者。主要用于学习目的。我的二传手看起来如下:

- (void) setSomething:(NSString *)input {
 something = input;
}

但是,在C ++和我过去使用过的其他语言中,您可以使用this指针来引用成员变量,例如this->something = input。在objective-c中,这被称为self。所以我想知道在objective-c中这样的东西是否可行?像这样:

- (void) setSomething:(NSString *)input {
 [self something] = input;
}

但那会为something调用getter。所以我不确定。所以我的问题是:

有没有办法可以利用自我指针进行分配?

若然,怎么样?

这是好习惯还是邪恶?

谢谢!

2 个答案:

答案 0 :(得分:4)

是的,它使用与C ++相同的语法,而self代替this

self->something = input;

答案 1 :(得分:2)

当你使用......时,你会有效地使用“自我”。

something = input;

...如果没有本地“某事”变量。 (即:真的没有必要添加一个明确的“自我”,人们通常不会。)

那就是说,你的代码示例没有保留输入,所以它可能不会按照你的预期进行(好吧,不会在NSString的情况下崩溃)。

因此,如果真的想要编写自己的setter(Objective-C property/synthesize设置是 lot 那么麻烦),那么''我需要使用类似的东西:

- (void) setSomething:(NSString *)input {
    if(something != input) {
        [input retain];
        [something release];
        something = input;
    }
}