1

Xcode がメモリの問題にフラグを立てている次のコードで問題が発生しています。警告は、コードの下の戻り行にあります。誰かが理由を知っていますか、それについて私に何ができますか?

- (id)copyWithZone:(NSZone *)zone
{
    NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:self];
    return [NSKeyedUnarchiver unarchiveObjectWithData:archivedData];
}

Mvariable.m:177:2: +1 (所有) 保持カウントが期待される呼び出し元に返される +0 保持カウントを持つオブジェクト
Mvariable.m:177:9: メソッドは +0 保持カウントを持つ Objective-C オブジェクトを返します
Mvariable.m:177:2: +0 保持カウントで呼び出し元に返されたオブジェクト
Mvariable.m:177:2: +1 (所有) 保持カウントが予想される呼び出し元に +0 保持カウントで返されたオブジェクト

4

1 に答える 1

7

「copy」、「create」、「new」、「alloc」、または「retain」で始まるメソッドは、保持されたオブジェクトを返す必要があります。つまり、呼び出し元はそれを解放する必要があります。

[NSKeyedUnarchiver unarchiveObjectWithData:archivedData]自動解放されたオブジェクトを返します。

参照: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html

于 2013-02-28T20:59:38.327 に答える