0

initWithCoderメソッドでリークが発生しています。

unarchiveObjectWithData:cacheDataは自動解放されたオブジェクトを返しますか?unarchiveObjectWithData:cacheDataからオブジェクトリターンを解放する責任があるのは誰ですか?

@implementation MyObject
@synthesize something = _something;

- (id)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super init])
    {
         self.something = [aDecoder decodeObjectForKey:@"something"];
    }
}

- (void)dealloc
{
        self.something = nil;
        [super dealloc];
}

@end

これは私がファイルからオブジェクトを読み取る場所です

MyObject *myObject = [NSKeyedUnarchiver unarchiveObjectWithData:cacheData];
4

1 に答える 1

1

unarchiveObjectWithData:cacheDataは自動解放されたオブジェクトを返しますか?unarchiveObjectWithData:cacheDataからオブジェクトリターンを解放する責任があるのは誰ですか?

NARCを覚えておいてください。呼び出しているメソッドが、、、、またはで始まる場合、new返されるオブジェクトを所有しているため、それを解放する必要があります。そうでない場合は、自動リリースされます。allocretaincopy

于 2012-05-09T23:23:42.290 に答える