gpt4 book ai didi

objective-c - 使用 [self setVariable :value] vs variable = value

转载 作者:行者123 更新时间:2023-12-04 18:18:11 28 4
gpt4 key购买 nike

在 Objective C 中,我想使用什么场景 [self setVariable:value];而不是 variable = value;
似乎做一个自我设置我为自己节省了几行代码,但还有什么其他优点呢?另外,我什么时候不想做自我设定?

最佳答案

编辑 :
我应该澄清一下,我在下面引用的内容严格涉及作为属性的变量。如果一个变量只是一个 ivar,那么 self.variable = value 之间没有区别或 variable = value ,除了 self.variable = value如果它只是一个 ivar,甚至不会编译,在这种情况下你需要使用 self->variable = value
打电话

[self setVariable:value];

和调用一样
self.variable = value;

然而,这是 不是 一样
variable = value;

前两种情况使用合成的 setVariable方法(或您自己定义的方法)。您想要使用它的原因是确保您对对象保持正确的保留计数。

例如,一个简单的属性,例如:
@property (retain) NSString *myString;

获取一个自动生成的 set 函数,如下所示:
-(void) setMyString:(NSString*)other
{
myString = [other retain];
}

如果你只是打电话
myString = otherString;

代码中的其他位置,然后是 myString没有正确保留,所以如果 otherString被释放,指向该对象的指针不再有效。

关于objective-c - 使用 [self setVariable :value] vs variable = value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11296554/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com