在NSData
initWithContentsOfURL:
的{{3}}中,它说:
返回的对象可能与原始接收者不同。
这有什么影响?这似乎意味着标准的“alloc / init”行可能会泄漏内存。
答案 0 :(得分: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
的结果),这在任何情况下都是个好主意 - 即使没有明确记录。