これがサンプルコードで、「文字列」オブジェクトのみがリリースされています。
NSString *nameOfFile = ... ;
NSError *error;
NSString *string = [[NSString alloc] initWithContentsOfFile:nameOfFile encoding:NSUTF8StringEncoding error:&error];
if (string == nil) {
// handle error
}
[string release];
エラーオブジェクトが解放されない理由を理解しました。これは、ここのメソッドが「new」または「alloc」メソッドでそのエラーオブジェクトを作成しなかったためです。代わりに、これは参照によって返されるため、initWithContentsOfFileメソッドがそのメモリを担当します。しかし、nameOfFileオブジェクトはどうですか?なぜ彼らはそれを解放しないのですか?参照で返されません...?