在's的文档中,它说:NSData
initWithContentsOfURL:
返回的对象可能与原始接收者不同。
这意味着什么?这似乎暗示标准的“alloc/init”行可能会泄漏内存。
有几个原因 - 类集群是最广为人知的:
- (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
),这在任何情况下都是一个好主意——即使没有明确记录。