NSData initWithContentsOfURL:不返回原始分配?

发布于 2024-11-09 14:02:36 字数 321 浏览 6 评论 0原文

文档NSData 的 initWithContentsOfURL: 的 >,它说:

返回的对象可能与原始接收者不同。

这意味着什么?这似乎暗示标准的“alloc/init”行可能会泄漏内存。

In the documentation of NSData's initWithContentsOfURL:, it says:

The returned object might be different than the original receiver.

What are the implications of that? It seems to imply that a standard "alloc/init" line could leak memory.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我要还你自由 2024-11-16 14:02:36

类簇被最广泛认可的原因有几个:

- (id)initWithContentsOfURL:(NSURL *)url
{
    self = [super init];
    if (self != nil) {
        NSData * result =
           [[NSDataClassClusterSpecialization alloc] initWithContentsOfURL:url];
        [self release];
        return result;
    }
    return self;
}

使用这种形式不会引入泄漏。

它只是意味着您应该只使用 alloc+init 调用的结果(而不是保留 alloc 的结果),即无论如何,这都是一个好主意——即使没有明确记录。

there are several reasons why - class clusters being the most publicly recognized:

- (id)initWithContentsOfURL:(NSURL *)url
{
    self = [super init];
    if (self != nil) {
        NSData * result =
           [[NSDataClassClusterSpecialization alloc] initWithContentsOfURL:url];
        [self release];
        return result;
    }
    return self;
}

no leaks are introduced using this form.

it just means that you should only use the result of the alloc+init call (rather than holding onto the result of alloc), which is a good idea in any case -- even when not explicitly documented.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文