• Foundation框架: 8.OC中的集合类之三


    前面我们讲完过了NSArrayNSMutablArray了, 这次我们来讲讲第二个集合类, NSSet和它的子类NSMutableSet, 其实NSSetNSArray基本上是一样的, 唯一的不同点就是NSSet它是没有循序的, 所返回的对象是随机的, 下面让我们来看看吧~





    例子:

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[])
    {
        NSSet *s = [NSSet set];
        
        NSSet *s1 = [NSSet setWithObjects:@"a", @"b", @"c", @"d", @"e", nil];
        
        NSString *str = [s1 anyObject];
        
        NSLog(@"s = %ld, s1 = %ld", s.count, s1.count);
        
        NSLog(@"str = %@", str);
        
        return 0;
    }
    

    打印出来的结果:

    2015-02-05 20:39:14.211 7.NSSet[3833:303] s = 0, s1 = 5
    2015-02-05 20:39:14.212 7.NSSet[3833:303] str = d
    





    其实NSSetNSArray的创建方法很像, 这是OC语法中的一个规律, 创建什么类的对象, 就以什么类名开头, 下面继续说NSMutableSet:

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[])
    {
        NSMutableSet *s = [NSMutableSet set];
        
        // 1.添加元素的方法
        [s addObject:@"a"];
        
        // 2.删除元素的方法
        [s removeObject:@"a"];
        
        return 0;
    }
    

    有些人会很细心的发现, 在删除元素的方法里会少了几个和NSArray一样的方法, 就只剩下两个方法, 其实这是没错的, 由于NSSet的特性, 它是随机返回的, 我们并不能知道它会返回哪个对象给我们, 所以这里的删除元素方法就缺少了几个和位置相关的.




    总结:

    NSSet和NSArray的对比:

    1> 共同点

    * 都是集合, 能存放多个OC对象

    * 只能存放OC对象, 不能存放非OC对象类型(基本数据类型:int, char, float等, 结构体, 枚举)

    * 本身都不可变, 都有一个可变的子类


    2> 不同点

    * NSArray有顺序, NSSet没有顺序.




    好了, 这次就讲到这里, 下次我们继续~~

  • 相关阅读:
    Microsoft JScript 运行时错误: 'document.getElementById(...)' 为空或不是对象
    可关闭与最小化的右下角浮动广告代码
    http://www.openlib.com/Type/2121.jsp
    JavaScript 论坛
    强烈推荐:240多个jQuery插件
    connectify
    rdcl 报表设置不分页
    配置IIS服务器,APK文件下载
    aspx 提交按钮只能点一次
    在RDLC报表中添加链接
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4282806.html
Copyright © 2020-2023  润新知