gpt4 book ai didi

iphone - 在这种情况下 NSMutableString 比 NSString 更有效吗?

转载 作者:行者123 更新时间:2023-12-03 20:19:06 24 4
gpt4 key购买 nike

如果我以这种方式声明一个指针变量:

NSString *foo;

然后在我的代码稍后的某个地方做一些事情,例如:

foo = @"bar";

这是否最终会获取我的 NSString,使用附加字符串在内存中创建一个新副本,然后删除我的初始字符串? foo 作为 NSMutableString 会更好吗?

最佳答案

不,foo是一个变量,持有一个指向 NSString 的指针。作业foo = @"bar"设置指针 foo 存储的值到 NSString @"bar" 的地址。没有复制。如果foo已经指向另一个 NSString例如,不是字符串常量(即像 @"bar" )并且没有对该实例的其他引用,那么就会出现内存泄漏。你会

[foo release];
foo = @"bar";

在这种情况下。您不需要保留或释放字符串常量,例如 @"bar" .

字符串常量无法更改,因此如果尝试修改常量字符串的值,将会出现运行时错误。分配 @"bar" 之间没有区别到NSString*NSMutableString*相比。当然,您将无法使用NSMutableString的变异方法。没有运行时错误,只是因为您将@“bar”(一个 NSString 实例)的地址分配给 NSMutableString* 类型的变量。如果你想改变字符串,你会这样做

NSMutableString *mutableFoo = [@"bar" mutableCopy];

在这种情况下,显然已制作了副本,您有责任释放 mutableFoo当你完成它时。

关于iphone - 在这种情况下 NSMutableString 比 NSString 更有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/706519/

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