一定有什麼東西在你的代碼別的,你是不是做對了,因爲覆蓋方法爲您展示在OP導致NSMutableSet
認識到我的對象是相同的:
Test.h:
#import "Foundation/Foundation.h"
@interface Test : NSObject
@end
Test.m:
#import "Test.h"
@implementation Test
- (BOOL)isEqual:(id)anObject {
return YES;
}
- (NSUInteger)hash {
return 1;
}
@end
的main.c:
#include <CoreFoundation/CoreFoundation.h>
#import "Test.h"
int main (int argc, const char * argv[]) {
Test *t1 = [[Test alloc] init];
Test *t2 = [[Test alloc] init];
Test *t3 = [[Test alloc] init];
Test *t4 = [[Test alloc] init];
NSSet *s = [NSMutableSet setWithObjects:t1, t2, t3, t4, nil];
NSLog(@"%lu", s.count);
return 0;
}
這個片段產生1
,符合市場預期。
添加相同的對象不會導致錯誤,它只是不會改變設置。 – vikingosegundo 2011-12-24 04:02:13