美文网首页
NSSet 的小泄

NSSet 的小泄

作者: iOS小虫下米 | 来源:发表于2015-12-31 10:25 被阅读23次
    NSMutableSet *set =[NSMutableSet new];
    
    NSMutableArray *arrayA = [@[@"1",@"2"] mutableCopy];
    [set addObject:arrayA];
    NSLog(@"set-A = %@",set);
    
    
    NSMutableArray *arrayB = [@[@"1",@"2"] mutableCopy];
    [set addObject:arrayB];
    NSLog(@"set-B = %@",set);
    
    NSMutableArray *arrayC = [@[@"1"] mutableCopy];
    [set addObject:arrayC];
    NSLog(@"set-C = %@",set);
    
    [arrayC addObject:@"2"];
    NSLog(@"set-C2= %@",set);
    
    NSSet *setB = [set copy];
    NSLog(@"setb  = %@",setB);

2015-12-31 10:06:30.908 set-A = {((1, 2))}
2015-12-31 10:06:30.909 set-B = {((1, 2))}
2015-12-31 10:06:30.909 set-C = {((1),(1, 2))}
2015-12-31 10:06:30.909 set-C2= {((1, 2 ),(1, 2))}
2015-12-31 10:06:30.909 setb = {((1, 2))}

可以看出,当我们向 arrayC加入一个元素之后,神奇的是发生了,set-C2出现了两个相同的元素集合。根据 set 的语法是不允许出现这种情况,然而现在却无法保证这一点,因为我们修改了 set 中已有的对象。

复制过的set,setb只有一个元素了。看起来像空 set 重新添加元素,这估计符合你的要求,或者不符合你的要求。根据你自己的需求做选择,不过最好的选择就是,不要对已经添加到 set 的元素做修改,或许有很多未知的错误。

相关文章

  • NSSet 的小泄

    2015-12-31 10:06:30.908 set-A = {((1, 2))}2015-12-31 10...

  • NSSet/NSDictionary/CGPoint/NSNum

    NSSet NSSet 里的数据是不能重复的NSSet *set=[NSSet setWithObjects:@"...

  • NSSet与NSArray的区别

    记得之前数组去重经常用NSSet来实现,可是觉得自己并不是很了解NSSet,如今有时间研究了一下NSSet,写篇小...

  • 数据去除多余重复数据

    利用NSSet的AllObjects方法 NSSet *set = [NSSet setWithArray:res...

  • Objective-C相关

    重温OC,发现好些之前忽视的小细节,简单的梳理一下。 NSSet NSSet相关 NSArray 基础数据类型可以...

  • iOS绘图

    core graphics绘图 NSSet是无序的 NSSet使用NSEnumerator遍历 NSSet any...

  • 基础零碎

    1.NSArray和NSSet的区别 >.NSArray内存中存储地址连续,而NSSet不连续 >.NSSet...

  • NSSet

    NSSet:无序集合NSSet和NSArray的区别:NSArray可以通过角标获取元素,NSSet是无序的不能用...

  • 高级iOS面试题

    1、NSSet与NSArray的区别 NSArray在内存中是连续的,NSSet不连续 NSSet效率更高,内部使...

  • 2020:一份高级iOS面试题

    1、NSArray与NSSet的区别? NSArray内存中存储地址连续,而NSSet不连续 NSSet效率高,内...

网友评论

      本文标题:NSSet 的小泄

      本文链接:https://www.haomeiwen.com/subject/dagihttx.html