gpt4 book ai didi

iphone - 使用下划线格式调用属性时 ios 应用程序崩溃

转载 作者:搜寻专家 更新时间:2023-10-30 20:19:54 26 4
gpt4 key购买 nike

我在 .h 中声明了一个变量:

@property (nonatomic, retain) NSString *var;

当我调用一个属性变量时:

 _var = sumthing;

应用程序崩溃,当我将其称为:

 self.var = sumthing;

效果不错。

这两种情况有什么不同吗?

注意:我没有使用 @synthesize 因为不需要专门写这个。

最佳答案

当您使用@property 时,您应该使用self.var 来保留sumthing,以便它在内部调用setter 方法来保留它.如果直接赋值,setter 方法将不会被调用,当 sumthing 被释放时它会崩溃。

基本上 self.var = sumthing; 相当于将 sumthing 分配给 var 然后保留它(var = [总和保留];)。当您直接执行它时,它只执行分配部分而不是保留部分。因此,当 sumthing 被释放时,当您使用 var 并且您的应用程序崩溃时,您将指向一个已释放的变量。

如果您仍然想在不使用 self.var 的情况下使用它,您可以尝试使用 _var = [sumthing retain]; 这可能会起作用。

这与合成无关,因为您不再需要使用它。你可以跳过它。

关于iphone - 使用下划线格式调用属性时 ios 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14640622/

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