gpt4 book ai didi

objective-c - @synthesize variable = _variable 到底做了什么?很有帮助吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:33:07 27 4
gpt4 key购买 nike

我知道 @synthesize-ing 变量会自动为我的 .h 文件中定义的 @property 创建访问器方法,并且使用 = _variable 告诉编译器要用于我的支持变量的名称,但它是否为我做任何其他事情?我几乎一直在使用类似的东西分配和读取我的类变量

self.variableName = somethingElse

self.someLabel.text = self.someString

我可以改为(假设所有@synthesize 语句都是正确的,等等)做类似的事情吗?

_variableName = somethingElse

我可以不使用 self.variable 而使用 _variable 而不用担心吗?我应该在我的 dealloc[self.variable release] 中使用 [_variable release] 吗?

我仍然对 objective-c/cocoa/iOS 开发的一些原因感到困惑。

最佳答案

@synthesize varible1 等同于 @synthesize variable1 = variable1 -- 这表示您为实例变量和属性赋予相同的名称。

当您说 @synthesize variable1 = variable2 时,variable1 是属性的名称,variable2 是实例变量的名称。

使用上面的@synthesize语句,如果你说:

self.variable1 = something; 

然后,如果该属性具有“保留”属性,则保留对象 something(并且释放 variable1 中的任何旧对象)。

但是如果你说:

variable2 = something;

然后没有保留/释放发生。这很可能会导致丢失对象错误。

至于在dealloc中释放,你可以说是任一种

[self.variable1 release];

[variable2 release];

虽然后者是首选。

你也可以说:

self.variable1 = nil;

这将释放变量并将其置零。

但请注意,前两种形式只能用于dealloc

关于objective-c - @synthesize variable = _variable 到底做了什么?很有帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9090764/

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