• NSArray


    NSArray

      一 oc的数组可以存储不同类型的对象。。java/c/c++ 则不可以。。

        oc只能存储对象 内存空间是连续的。。只保存对象的指针 占得空间也比较小。

      

      二 初始化 

        

    NSArray *array1 =[[ NSArray alloc] initWithObjects:@"1",@"2",@"3",nil];

        

         三  方法

        1 数组的长度 count

            

    int arrayCount = (int)array1.count;

        2 是否包含对象 (BOOL) containsObject:

        3 得到最后一个对象 lastObject

        4 得到第一个对象 firstObject

        5 取出指定的对象  objectAtIndex:

        6 打印元素对应的下表 (元素不存在打印-1)indexOfObject:

     四 数组的遍历

        1  for循环

        2 for in 快速枚举

        3 枚举器(迭代器)

    for(int i =0; i<array1.count.i++){
          
           NSString *str = [str objectAtIndex:i];            
    }
    //如果使用快速枚举,则数组要保持类型一样
    
         for(NSString *str in array1){
    
        
         }
    NSEnumerator *enumerator = [array objectEnumerator];
    id obj = nil;
    while(obj = [enumerator nextObject]){
        NSLog(@"obj=%@",obj);
    }
    #pragma mark 普通遍历
    void arrayFor1(){
        NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
        int count = array.count;
        for(int i=0; i<count; i++){
            id obj = [array objectAtIndex:i];
            NSLog(@"%i-%@",i, obj);
        }
    }
    
    #pragma mark  快速遍历
    void arrayFor2(){
        NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
        int count = array.count;
        int i=0;
        for(id obj in array){
            NSLog(@"%i-%@",i, obj);
            i++;
        }
    }
    
    #pragma mark  利用block遍历
    void arrayFor3(){
        NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
        [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            NSLog(@"%zi->%@",idx, obj);
          //  *stop = YES; //改变外边的Bool,终止遍历
        }];
    }
    #pragma mark 利用迭代器
    void arrayFor4(){
        NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
        NSEnumerator *enumerator = [array objectEnumerator];
        //如果放到遍历之后,则取到空,原因是,遍历完了,就没值了
        NSArray *array2 = [enumerator allObjects];
        NSLog(@"array2:%@", array2);
        
        //获取下一个需要遍历的元素
        id obj = nil;
        while (obj = [enumerator nextObject]) {
            NSLog(@"obj=%@", obj);
        }
  • 相关阅读:
    NodeJS笔记:处理非utf8编码
    SQL Server存储过程中的异常处理
    "岛主" 同学给我出的算法题
    学 Win32 汇编[18]: 关于压栈(PUSH)与出栈(POP) 之二
    如何在数据表中存取图片 回复 "三足乌" 的问题
    学 Win32 汇编[19]: 查看二进制等相关函数
    如何删除动态数组的指定元素 回复 "Splendour" 的部分问题
    学 Win32 汇编[17]: 关于压栈(PUSH)与出栈(POP) 之一
    学 Win32 汇编[22] 逻辑运算指令: AND、OR、XOR、NOT、TEST
    学 Win32 汇编[20]: 洞察标志寄存器
  • 原文地址:https://www.cnblogs.com/cooking/p/4914380.html
Copyright © 2020-2023  润新知