我有一个 NSMutableOrderedSet,我正在从中添加和删除 MTLModels。hash 和 isEqual 方法都将为两个对象返回 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 中,它也会返回 NO,即使它是 firstObject 返回的对象。