您好,匿名用户
随意问技术百科期待您的加入

NSNull 在NSSet和NSArray中的区别

+2 投票

我今天测试了两段代码

    NSMutableArray *a = [[NSMutableArray alloc] init];
    [a addObject:[NSNull null]];
    [a addObject:[NSNull null]];
    [a addObject:[NSNull null]];
    
    NSLog(@"Array Count:%d ", [a count]); // Array Count:3
    NSMutableSet *s = [[NSMutableSet alloc] init];
    [s addObject:[NSNull null]];
    [s addObject:[NSNull null]];
    [s addObject:[NSNull null]];
    
    NSLog(@"Set Count:%d ", [s count]); // Array Count:1

Array和Set里的对象都是一样的,但是出来的count居然不一样。。。这是为什么?
我的需求是,要一个无序的Set,但是set里的对象可能是空,但也要占一个位置。貌似NSMutableSet实现不了。。。

用户头像 提问 2012年 12月1日 @ Shyvana 上等兵 (214 威望)
分享到:

2个回答

+1 投票
 
最佳答案

NSMutableArray 中允许存在重复对象,你执行了3次[a addObject:[NSNull null]];,相当于把[NSNull null]放进array3次,自然count为3

而 NSMutableSet 是不允许存在重复对象的,又因为[NSNull null]每次返回的都是同一个对象实例,无论你执行多少次 [s addObject:[NSNull null]]; ,NSMutableSet 中只会保留一次

用户头像 回复 2012年 12月6日 @ Oracle 上等兵 (238 威望)
编辑 2012年 12月11日 @Saber
+2 投票

你要搞清楚啥是set:set是集合,key相同的元素只能有一个,当然count就是1了。

用户头像 回复 2012年 12月1日 @ Brand 上等兵 (185 威望)
提一个问题:

相关问题

0 投票
1 回复 42 阅读
0 投票
1 回复 50 阅读
+1 投票
1 回复 44 阅读
用户头像 提问 2012年 12月1日 @ hacker 上等兵 (362 威望)
0 投票
1 回复 36 阅读
0 投票
1 回复 57 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...