gpt4 book ai didi

objective-c - cocoa 内存管理问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:27:09 24 4
gpt4 key购买 nike

我正在和一个 friend 争论,他说我必须把自动释放放在这里:

NSURL *url = [[NSURL URLWithString:@"http://origin-www.metrolyrics.com/api/widgets/mac/seeker.php"] autorelease];

但是从 NSURL 类方法发送给我的对象不是自动自动释放的吗?谢谢。

最佳答案

这是规则:

如果您调用一个返回对象的方法并且:

  • new开头
  • alloc 开始
  • 保留
  • 包含副本

然后您负责释放(或自动释放)返回的对象。 唯一情况不是这样的情况是文档另有说明。您还可以在头文件中看到该方法使用 NS_RETURNS_RETAINED 宏注释。 (头文件算文档)

记住它的一种简单方法是“NARC”(新分配保留复制)。

在您的示例中,由于 URLWithString: 不是以 newalloc 开头,因此不包含 copy ,并且不是保留,那么您不得释放返回的对象。这样做违反了内存管理指南,会导致您的应用程序崩溃(除非您在其他地方做了一些愚蠢的事情)。

关于objective-c - cocoa 内存管理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5284607/

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