zoukankan      html  css  js  c++  java
  • oc之数组定义

    在objective c中,除了C的数组使用方法,Cocoa还为我们提供了一个NSArray类,使用该类可以简单方便的存储对象,该类同NSMutableString一样,还有一个子类,用于处理可变数组:NSMutableArray.类中的方法简单直了,很容易理解,下面只做一些简单的示范:

    #import <Foundation/Foundation.h>

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            //数组可以一次性添加完全,以nil作为结尾标志。
            NSArray *array =[NSArray arrayWithObjects:@"DANCER",@"holy", nil];
            //如果要添加空的话可以用以下方法
            NSArray *array1=[NSArray arrayWithObjects:@"dancer",[NSNull null], nil];
            //同字符串一样,可以建立可变更的数组,并设置一个初始量。
            NSMutableArray *array2=[NSMutableArray arrayWithCapacity:50];
            //下面可以动态添加数组元素
            [array2 addObject:@"holy"];
            [array2 addObject:@"dancer"];
            [array2 addObject:@"hoho"];
            //合并字符串数组
            NSString *str = [array2 componentsJoinedByString:@"|"];
            NSLog(str);
            //字符串切割成数组
            NSArray *array3=[str componentsSeparatedByString:@"|"];
            NSLog(@"%@",array3);
            //可变数组元素删除
            [array2 removeObjectAtIndex:1];
            NSLog(@"%@",array2);
        }
        return 0;
    }

    NSArray可以放一切数据,除了C中的基本数据类型,C中的一些基本元素我们可以用NSNumber类来包装,类似java中的装箱,另外还有一些struct类型的数据我们也可以用NSNumber类的父类NSValue来进行包装,包装成NSValue的对象再将其放入数组中。具体使用方法看代码:

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            NSMutableArray *array = [NSMutableArray arrayWithCapacity:50];
            int age=5;
            char c='c';
            float f=3.14;
            NSRect rect =NSMakeRect(1, 2, 3, 4);
            NSNumber *myAge = [NSNumber numberWithInt:age];
            NSNumber *myC = [NSNumber numberWithChar:c];
            NSNumber *myF= [NSNumber numberWithFloat:f];
            NSValue *value = [NSValue valueWithRect:rect];
            [array addObject:myAge];
            [array addObject:myC];
            [array addObject:myF];
            [array addObject:value];
            NSLog(@"%@",array);
        }
        return 0;
    }

    Cocoa提供了好几种方法进行数组的迭代,如上所示,我们直接用%@可以输出数组的详细信息,也可以使用以下方法将其元素分别取出:

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            NSMutableArray *array = [NSMutableArray arrayWithCapacity:50];
            [array addObject:@"a"];
            [array addObject:@"b"];
            [array addObject:@"c"];
            [array addObject:@"d"];
            NSLog(@"%@",array);//以大括号形式输出数组内容
            //第一种迭代方法
            for(int i=0;i<[array count];i++)
            {
                NSLog(@"%@",[array objectAtIndex:i]);
            }
            //第二种迭代方法
            id ob;
            NSEnumerator *enumerator = [array objectEnumerator];//实现一个迭代器
            while(ob=[enumerator nextObject])
            {
                NSLog(@"%@",ob);
            }
            //第三种最简单的for in迭代方法
            id oc;
            for (oc in array) {
                NSLog(@"%@",oc);
            }
        }
        return 0;
    }

    本文转自holydancer的CSDN专栏:http://blog.csdn.net/holydancer/article/details/7346221

  • 相关阅读:
    delphi 使用条件编译指令
    [转] 编程之道 二
    delphi中XLSReadWrite控件的使用(1)简介
    delphi中XLSReadWrite控件的使用(2)delphi XE下安装
    墙纸自动换1.4算法分析
    Delphi中设置屏幕分辨率
    delphistringgrid另类自动向下滚屏
    【Hex 格式文件操作】一、intel hex格式文件说明
    INTEL hex文件格式
    [转]编程之道 一
  • 原文地址:https://www.cnblogs.com/songshu-yilia/p/3950770.html
Copyright © 2011-2022 走看看