gpt4 book ai didi

objective-c - 关于 NSString 的一些初学者问题

转载 作者:行者123 更新时间:2023-12-03 17:32:44 25 4
gpt4 key购买 nike

嘿,我有几个关于 NSString 的问题。

这两种说法有何不同?

NSString *str = @"asdasd";
NSString *str = [[NSString alloc] initWithString:@"asdasd"];

我是否正确地认为另一个是静态字符串,在程序关闭之前不会从内存中释放?我一直使用第二种方法,当我不需要的时候就释放它。有人可以解释一下吗?

最佳答案

理论上,它们是不同的。第一个字符串是常量,无法释放。第二个(同样,理论上)是在堆上分配的,当您使用完它时应该释放。 (这是根据内存管理规则)

但是,在这个特定实例中没有什么区别,因为初始化器只会返回原始字符串。 因为编译器足够聪明,可以看到“啊哈,你正在从常量字符串分配一个不可变对象(immutable对象),因此结果字符串保证与原始常量字符串相同,所以我可以跳过整个分配东西并重新使用常量字符串”。

所以事实证明它们将是相同的字符串。然而,您最初的直觉 react 是正确的,您应该继续遵循它们。 :)

关于objective-c - 关于 NSString 的一些初学者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4175182/

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