2
在NSData
的initWithContentsOfURL:
的documentation,它说:NSData initWithContentsOfURL:不返回原始分配?
返回的对象可能会比原来的接收器不同。
那是什么意思?这似乎意味着标准的“alloc/init”行可能会泄漏内存。
在NSData
的initWithContentsOfURL:
的documentation,它说: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
的结果),这是在任何情况下,一个好主意 - 即使没有明确记载。