3

我有一个带有成员变量的objective-c 类。我正在为每一个创建 getter 和 setter。主要用于学习目的。我的二传手如下所示:

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

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

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

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

有没有办法使用自指针进行赋值?

如果是这样,怎么做?

这是好的做法还是邪恶的?

谢谢!

4

2 回答 2

4

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

self->something = input;
于 2010-12-27T21:49:07.910 回答
2

当您使用...时,您实际上是在隐式使用“自我”

something = input;

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

也就是说,您的代码示例没有保留输入,因此它可能不会按照您的预期进行(好吧,在 NSString 的情况下不会崩溃很长时间)。

因此,如果您真的想编写自己的设置器(Objective-C属性/合成设置的麻烦少得多),您需要使用类似的东西:

- (void) setSomething:(NSString *)input {
    if(something != input) {
        [input retain];
        [something release];
        something = input;
    }
}
于 2010-12-27T21:54:08.293 回答