gpt4 book ai didi

ios - 更改属性对象不会影响属性

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

我想验证一些我经常使用的东西,但是当我想到它时……我很困惑为什么它会那样工作,我确定我阅读了关于它的解释,但我找不到它。据我所知,苹果将他们的 setter 创建为这样的东西。

-(void)setString:(NSString *)value {
if (_string != value) {
[_string release];
_string = [value retain];
}
}

现在我通常创建这样的属性。

@property (nonatomic) NSString *string;
@synthesize string = _string;

问题是关于下一个代码:

        NSString *s = @"Should be deleted";
[self setString:s];
NSLog(@"string check111 =%@",self.string);
s = NULL;
NSLog(@"string check222=%@",self.string);

将生成相同的输出。从 setter 中,我可以看到我的属性指向我更改的对象,但属性值将是相同的。这种情况会引发另一个问题(如果它这样工作,为什么我需要 copy 属性) .有人可以提供一个简短的解释吗? (或阅读具体链接)。Tnx 很多。 (我想我的问题可能已经在论坛上问过了)

最佳答案

这没有效果,因为您正在更改 s 指向的对象。

这张图可能解释得更好,原来你有这样的东西:

enter image description here

改变s的点不会影响_string

enter image description here

将属性设置为复制的想法是,以防您将字符串属性设置为可变字符串,然后更改其内容。看这个question .

关于ios - 更改属性对象不会影响属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24223597/

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