のドキュメントでは、次NSData
のinitWithContentsOfURL:
ように述べています。
返されるオブジェクトは、元のレシーバーとは異なる場合があります。
その意味は何ですか?標準の「alloc/init」行がメモリをリークする可能性があることを意味しているようです。
のドキュメントでは、次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