gpt4 book ai didi

objective-c - @"Strings"在内存中是如何分配的?

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

我很好奇以下代码的内存分配。

NSString *myString = [NSString string];

我知道这将创建一个自动释放的空字符串,@""

当我打电话时会发生什么

myString = @"Hello world";

我的引用是否与提供的自动释放对象NSString相同,或者我只是分配了一个我负责释放的新对象?

最佳答案

当想知道您是否拥有某个对象时,问问自己:

我用来创建这个对象的方法...

  • new开头?
  • alloc开头?
  • 包含副本
  • 等于保留

如果您对其中任何一个问题回答"is",那么您有责任对返回的对象调用 releaseautorelease。 (请注意,核心基础对象的规则略有不同。另请注意,文档明确指出与此相矛盾的任何内容均获胜。文档始终取代指南)

就您的字符串而言,您所有问题的答案都是“否”,因此您不对该对象负责。常量字符串(@"foo" 样式)被硬编码到应用程序二进制文件中,并且无法被释放。然而,这是一个实现细节。只要遵循内存管理规则,就可以了!

关于objective-c - @"Strings"在内存中是如何分配的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436016/

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