#import <Foundation/Foundation.h>



int main(int argc, const char *
argv[])

{

    // 创建数组

    NSArray *arr1 = nil;

//    NSLog(@"%p", arr1);

    NSObject *obj = [NSObject new];

    arr1 = [NSArray arrayWithObjects:@"One", @"Two", @"Three",
obj, nil];//结束标识,相当于C语言的“\0”

//    NSLog(@"%p", arr1);

    NSLog(@"arr1: %@",
arr1);

    

    // 推荐以下的新语法

    NSString *str = @"Hello";

    NSArray *arr2 = @[@"zhangsan", @"lisi", @"wangwu", @"zhaoliu" ,@"tianqi",
str];//这样的方法自己主动在后面加入了nil

    NSLog(@"arr2: %@",
arr2);

    

    // 訪问数组成员 objectAtIndex

//    NSObject *tmpObj = [arr1 objectAtIndex:3];

    id tmpObj = [arr1 objectAtIndex:3];

    NSLog(@"tmpObj: %@",
tmpObj);

    

    // 推荐使用以下的新语法

    tmpObj = arr2[2];

    NSLog(@"arr2[2]: %@",
tmpObj);

    

    // 可变数组

    NSMutableArray *firstArr = [NSMutableArray arrayWithCapacity:30];

    // 加入

    [firstArr addObject:@"One"];

    [firstArr addObject:@"Two"];

    [firstArr addObject:@"Three"];

    [firstArr addObject:@"Four"];

    [firstArr addObject:@"Five"];

    

    NSLog(@"The Mutable Array: %@",
firstArr);

    

    NSMutableArray *secArr = [NSMutableArray arrayWithArray:arr2];

    NSLog(@"secArr: %@",
secArr);

    

    // 删除

    [secArr removeObject:@"tianqi"];

    NSLog(@"==secArr: %@",
secArr);

    [secArr removeObjectAtIndex:2];

    NSLog(@"===secArr: %@",
secArr);

    

    // 插入

    [secArr insertObject:@"wangwu" atIndex:2];//id 是对象 
index 是位置

    NSLog(@"after insert: %@",
secArr);

    

    // 替换

    NSObject *someObj = [NSObject new];

    [secArr replaceObjectAtIndex:4 withObject:someObj];

    NSLog(@"after replace: %@",
secArr);



    

    // C语言遍历数组

    NSUInteger number = [secArr count];

    for (int i
= 0; i < number; i++) {

        id obj = secArr[i];

        NSLog(@"%@",
obj);

    }

    

    

    // 通过枚举器来遍历数组(正着遍历)

    NSEnumerator *enum1 = [secArr objectEnumerator];

    id obj1;

    NSLog(@"*************************");

    while (obj1 = [enum1 nextObject])
{

        NSLog(@"obj1: %@",
obj1);

    }

    // 通过枚举器来遍历数组(倒着遍历)   
    NSEnumerator *enum2 = [secArr reverseObjectEnumerator];

    while (obj1 = [enum2 nextObject])
{

        NSLog(@"reverse: %@",
obj1);

    }

    

    NSLog(@"============================");

    // 高速枚举

    for (id obj in secArr)
{

        NSLog(@"Fast Enumeration: %@",
obj);

    }

    

    

    return 0;

}

OC中数组的使用方法的更多相关文章

  1. OC中数组类NSArray的详解,常用属性和方法(一)

    数组是一个有序的集合,OC中的数组只能存储对象类型, 但是对于对象的类型没有限制. 通过下标访问数组元素,下标从0开始. NSA

  2. javascript中数组常用的方法

    在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...

  3. javascript中数组Array的方法

    一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...

  4. javascript中数组的concat()方法 - 数组连接

    <html> <head> <title>数组的concat()方法</title> <script> /* 数组的concat()方法: ...

  5. ES6中数组的新方法

    数组的扩展 1.1扩展运算符 1.1.1:... 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. <body> < ...

  6. JS中数组的迭代方法和归并方法

    昨天总结的JavaScript中的数组Array方法 数组的迭代方法 ES5中为数组定义了5个迭代方法.每个方法都要接收两个参数:要在每一项上面运行的函数和(可选的)运行该函数的作用域对象---影响t ...

  7. OC中的内省(Introspection)方法

    我们在写OC代码的时候经常用到:isKindOfClass: 一类的方法,但是对于它并没有一个了解,这里也是从网上搜索了一些内容,简单介绍并记录一下.这类方法就是属于OC的特性之一:内省. 内省(In ...

  8. Swift的数组与OC中数组的区别

    相同的值可以多次出现在一个数组的不同位置: Swift中的数组,数据值在被存储进入到某个数组之前类型必须明确,可以显示的类型标注或者类型推断.而且,Swift中的数组不必是对象类型. OC中的NSAr ...

  9. javascript中数组常用的方法和属性

    前言 在javascript中,数组是一种非常重要的数据类型,我们时常会和它打交道,最近在开发项目中频繁的使用到数组,但是自己对数组的众多方法已经是非常模糊了,为了方便自己以后能够更好的使用数组中的属 ...

随机推荐

  1. 服务器迁移到 Windows Servec 2008 R2 64 bit 和IIS 7问题记录

    近期公司把网站迁移到了新的环境,windows service 2008 64 bit 和IIS 7,问题有点多,对系统使用影响很多,也困扰了我几个星期,现在记录一些主要的注意点 1.组件权限 系统使 ...

  2. EF6 Working with Proxies ProxyCreationEnabled

    When creating instances of POCO entity types, the Entity Framework often creates instances of a dyna ...

  3. oracle导入DMP步骤

    oracle导入DMP步骤如下:1.已经存在的数据库需要进行以下的操作,如果不存在,可略过:    删除用户     drop user SUDMDB cascade;     删除表空间和数据文件 ...

  4. 四:Ionic Framework不支持Android4.2.2的解决方法

    目前有一个项目是在Ionic3上开发的,浏览器中进行开发和处理,并将项目打包至Android7.1的平板中查看,运行效果是不错的 大体的框架与交互方式已经完成了,开会时并演示给用户看,发现都是不错的, ...

  5. CodeForces 143C Help Farmer

    暴力枚举. 枚举最小的那个数字,不会超过$1000$,剩下的两个数字根号的效率枚举一下即可. #include<bits/stdc++.h> using namespace std; lo ...

  6. go chapter 6 - map array

    遍历 for i,v := range *arr { // 遍历数组,第一个参数为index, 第二个参数为元素 fmt.Println("---------------") fm ...

  7. 子查询在UPDATE 语句中的应用

    在UPDATE语句中可以在更新列表中以及WHERE语句使用子查询.下面演示一个将图书的出版日期全部更新为所有图书中的最新出版日期,SQL语句如下: UPDATE T_Book SET FYearPub ...

  8. 关于lower_bound的优先级重载

    今天才知道$lower\_bound$最后有一个优先级参数…… 首先$lower\_bound$中的优先级和序列优先级必须相同才有效 $lower\_bound$中优先级默认的是小于号,也就是说仅当序 ...

  9. linux centos下安装docker

    1.在vm中装好好centos后,更新内核 运行docker需要内核版本为3.8或者更高的版本,内核必须支持一种合适的存储驱动(Drivice Mapper.AUFS.vfs.btrfs.ZFS),默 ...

  10. [转]详细解析Java中抽象类和接口的区别

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...