MTLModels を追加および削除する NSMutableOrderedSet があります。hash メソッドと isEqual メソッドは両方とも 2 つのオブジェクトに対して true を返しますが、containsObject は false を返します。
このコードが機能する場合と機能しない場合があります。
models count: 1
isEqual: 1
hashes equal: 1
containsObject: 0
以下のコードで上記を出力できる可能性はありますか?
@property (nonatomic, strong) NSMutableOrderedSet *models;
- (void)remove:(MTLModel *)model {
NSLog(@"models count: %d", self.models.count);
MTLModel *modelInSet = (MTLModel *)self.models.firstObject;
NSLog(@"isEqual: %d", [modelInSet isEqual:model]);
NSLog(@"hashes equal: %d", modelInSet.hash == model.hash);
NSLog(@"containsObject: %d", [self.models containsObject:model]);
}
アップデート:
フォローアップとして、NSMutableOrderedSet が NO を返す場合、これは YES を返します。
[[self.models array] containsObject:model]
更新 2:
modelInSet が self.models に含まれているかどうかを確認すると、firstObject によって返されるオブジェクトであっても、NO が返されます。