2

在's的文档中,它说:NSDatainitWithContentsOfURL:

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

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

4

1 回答 1

4

有几个原因 - 类集群是最广为人知的:

- (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),这在任何情况下都是一个好主意——即使没有明确记录。

于 2011-05-23T21:30:51.357 回答