私は作成した2種類のオブジェクト(Piecesなど)を保持するNSMutableOrderedセットを持っています。私もユニークを作成するために、両方のクラスのハッシュを上書きIsEqualメソッドは、オブジェクトをMutableOrderedSetに追加しようとすると、割り当て解除されたインスタンスに送信されます。
- (BOOL)isEqual:(Other *)object
{
if (([title isEqualToString:[object title]])
&& ([subTitle isEqualToString:[object subTitle]])
&& ([description isEqualToString:[object description]])
&& (otherTime == [object otherTime]))
return YES;
else
return NO;
}
:
ワンピースやその他の両方彼らのisEqualメソッドはそうのようにオーバーライドしています
ワンピース:
- (BOOL)isEqual:(Piece *)object
{
if (([title isEqualToString:[object title]])
&& ([composer isEqualToString:[object composer]])
&& (major == [object major])
&& (tempo == [object tempo])
&& (pieceKey == [object pieceKey])
&& (pieceTime == [object pieceTime]))
return YES;
else
return NO;
}
その他各インスタンスのハッシュ(ivarsのint値を取得して追加することによって)。私のアプリで
は、アンその他がセットから削除され、その後、私はセットに曲を追加しようとすると、私はこの取得:
- (NSUInteger)hash
{
NSUInteger prime = 31;
NSUInteger result = 1;
result = prime * (result + [title intValue]);
result = prime * (result + [composer intValue]);
result = prime * (result + major);
result = prime * (result + tempo);
result = prime * (result + pieceKey);
result = prime * (result + pieceTime);
return result;
}
:ここ
-[Other isEqual:]: message sent to deallocated instance 0x80d5680
をハッシュ方式であります
なぜこれが起こっているのか誰かが知っているなら、私は本当に助けになるでしょう。
おかげで、
あなたは[オブジェクトの説明]を呼びそそうとしていますか? NSObject関数です。 –
それは問題である可能性があります、私はdescriptionと呼ばれるインスタンス変数を持っています、私は完全にNSObjectの記述方法について忘れました –
私はちょうどそれをチェックし、インスタンスを[pieceSession removeObjectAtIndex:section - 2] isEqualメソッドを取得している同じインスタンスです。 –