0
finishDecodingもNSKeyedUnarchiverインスタンスのリリースを処理していますか? Class Referenceには記載されていません。NSKeyedUnarchiverを使用してfinishDecodingした後で解放する必要がありますか?
finishDecodingもNSKeyedUnarchiverインスタンスのリリースを処理していますか? Class Referenceには記載されていません。NSKeyedUnarchiverを使用してfinishDecodingした後で解放する必要がありますか?
いいえ、あなたはそれを自分で処理する必要があります。
Archives and Serializations Programming Guideで簡単に確認できます。例を見て、両方の方法(finishDecoding
とrelease
)が呼び出されます。
ありがとうございます。私が抱えている問題は、リリース時にNSMutableArrayの内容が失われてしまうことです。 _connectedSystems = [unarchiver decodeObjectForKey:kSystemsDataKey]; [unarchiver finishDecoding]; EEMSystem * system = [_connectedSystems objectAtIndex:0]; NSLog(@ "%@"、system.name); これは私に名前を与えます。 しかし、[unarchiver release]を追加した場合。 [unarchiver finishDecoding]の後に。私はうまくいきません。 –
@Man of One Way - 本当に好奇心が強いですが、これは 'release'メソッドの単純な呼び出しには関係ありません。コードスニペットを与える別の質問をして、それが何であるかを調べることをお勧めします。 –
問題は、 - (id)initWithCoder:(NSCoder *)aDecoderを実行し、[aDecoder decodeObjectForKey:kEEMSystemNameKey]を実行するときに発生する必要があります。私の弦にNSStringを最初に割り当てる必要があります。それ以外の場合は、システム内のNSString *の名前がアーカイバの中の何かを指し示し、一度解放されると消えます。 –