我有一个带成员变量的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。所以我不确定。所以我的问题是:
有没有办法可以利用自我指针进行分配?
若然,怎么样?
这是好习惯还是邪恶?
谢谢!
答案 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;
}
}