0
次のコードを使用しました。ゾンビレポート:メッセージが割り当て解除されたインスタンスに送信されました
MainView.h:
NSString *sCopySource;
NSString *sFileSource;
// retain and copy used both for test proposes
@property (nonatomic, retain) NSString *sCopySource;
@property (nonatomic, copy) NSString *sFileSource;
MainView.m:
// Inside the first method:
sCopySource = [NSString stringWithFormat:@"%@%@", path1, filename];
sFileSource = [NSString stringWithFormat:@"%@%@", path2, filename];
// Inside the second method:
[[NSFileManager defaultManager] copyItemAtPath:sCopySource toPath:sFileSource error:&err];
そしてゾンビが有効なオブジェクトsCopySource
とsFileSource
ことで、コードの最後の行でエラーを取る:
message sent to deallocated instance
なぜですか? retain
およびcopy
としてマークされた特性。これを修正するには?
ありがとうございました!
P.S. ratain
とrelease
の方法を使用して回答しないでください。彼らは非常に不便です。
gaige、ありがとうございます!ベストは何ですか?保持するかコピーしますか? – Dmitry
何をしているかによって異なります。コピーは、保持しているバージョンが変更されないことを保証します。一方、Retainは元のオブジェクトへの参照を保持します。元のオブジェクトが元のクラスに変更可能な場合は変更される可能性があります。通常、retainは十分で効率的ですが、コードの他の場所で変更される可能性のある値を扱う場合は、コピーが必要な場合があります。 – gaige
もう一度ありがとう! – Dmitry