gpt4 book ai didi

iphone - NSString基础知识-内存-保留-复制

转载 作者:行者123 更新时间:2023-12-03 20:22:34 26 4
gpt4 key购买 nike

这是我的代码:

NSString *xyz=[NSString stringWithFormat:@"%i %@",10,@"Sagar"];

现在我正在采用其他字符串,如下所示。

NSString *x2=[xyz copy];

我不知道这里会发生什么?是不是像 x2 具有 xyz 的 ref 的 ref?

NSString *x3=[xyz retain];

这里会发生什么,x3 有一个复制了字符串的新内存,或者 [xyz copy] 是这样吗?

现在,如何从内存中删除所有这三个字符串?

最佳答案

NSString *xyz=[NSString stringWithFormat:@"%i %@",10,@"Sagar"];

这将创建 NSString 的自动释放实例 - 当自动释放池耗尽时(通常在下一个运行循环)它将被释放。

NSString *x2 = [xyz copy];

理论上 -copy 消息将创建一个保留计数为 1 的对象的新实例(也就是说,您必须在某个地方释放它),但由于 NSString 对象是不可变的,因此 [xyz copy] 将是优化为 [xyz keep],因此它将指向同一个实例。

NSString *x3=[xyz retain];

x3 将指向与 xyz(和 x2)相同的实例,并且其保留计数将增加 - 您必须在某处释放对象。

Now, how to remove all these three strings from memory?

确保将所有保留(复制)消息与释放配对,并且内存将被释放。
阅读 Objective-c memory management guide了解更多详情。

关于iphone - NSString基础知识-内存-保留-复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2183175/

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