NSMutableDictionary 内のすべてのオブジェクトを解放したいときに発生する、理解できないエラーがあります。
bodyと呼ばれるカスタムオブジェクトで発生しており、出力は次のとおりです。
-[__NSTaggedDate body]: unrecognized selector sent to instance 0xffffffffffffffff
私はインターネット上でそれについて非常に貧弱な情報を見つけました.
NSMutableDictionary 内のすべてのオブジェクトを解放したいときに発生する、理解できないエラーがあります。
bodyと呼ばれるカスタムオブジェクトで発生しており、出力は次のとおりです。
-[__NSTaggedDate body]: unrecognized selector sent to instance 0xffffffffffffffff
私はインターネット上でそれについて非常に貧弱な情報を見つけました.
それがAppleのプライベートクラスです。このようなエラーは通常、メモリ管理を台無しにしたときに発生します。
ディクショナリ内のすべてのオブジェクトを解放しようとしているのはなぜですか? オブジェクトをディクショナリ (または配列) に追加すると、ディクショナリはそれを保持します (所有権を取得します)。ディクショナリからオブジェクトを削除すると解放されますが、その必要はありません。
すでにARC の使用を検討しましたか? これにより、メモリ管理がはるかに簡単になります。オブジェクトの保持と解放について心配する必要はもうありません。
これは文書化されていない内部のココア クラスです。しかし、それは実際に何が起こっているのかということではないので、気にする必要はありません。説明が複雑で、ここでは関係のない理由でおそらく発生しているニシンです。
報告されたアドレスを見てください: 0xffffffffffffffff。意味のない値です。その赤いニシンがなければ、セグメンテーション違反があったはずです。
何らかの理由で、メッセージbody
を無効なポインターに送信しています (どこかでデータが破損している可能性があります)。
このクラスはわかりませんが、おそらくプライベート クラスです (「タグ付きポインター」トリックを使用する NSDate オブジェクトの内部表現であると思いますが、推測です)。
とにかく、クラッシュは というオブジェクトではなく、 というメソッドを呼び出すbody
ときに発生しています。クラッシュはおそらく、メモリ破損を生成するコードのメモリ管理が悪いためですbody
NSDictionary
。コンテナ クラスは保持しているオブジェクトを気に入っNSArray
てNSDictionary
保持し、オブジェクトがオブジェクトから削除されたときにそれらを解放するためです。したがって、「NSMutableDictionary 内のすべてのオブジェクトを解放したい」理由がわかりません。removeAllObjects
それを呼び出すだけでNSDictionary
完了です。release
自分でオブジェクトを呼び出す必要はありません (retain
また、オブジェクトを辞書に追加する場合)