#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. 我一直记不住的vim用法

    一.多行编辑进入visual block模式一般模式下Crtl+v组合键以块的形式选中待编辑的文本 进入visual line模式一般模式下大写V以行的形式选中待编辑的文本 上述两种模式的复制用y,删 ...

  2. POJ 2777 Count Color(线段树 + 染色问题)

    传送门:Count Color Description Chosen Problem Solving and Program design as an optional course, you are ...

  3. spark启动问题,发现任务都是在localhost下面运行的,原来启动spark-shell的时候需要带主节点的参数

    在Spark 集群上运行一个应用,只需通过master的 spark://IP:PORT 链接传递到SparkContext构造器 在集群上运行交互式的Spark 命令, 运行如下命令: MASTER ...

  4. Mac OS X 更新JAMF域控配置

    在终端执行以下命令即可更新jamf域控配置属性 sudo jamf mcx # 应用被管理的配置信息 sudo jamf policy -trigger # 检查触发器策略 sudo jamf rec ...

  5. 初见Python<3>:字符串

    1.格式化字符串 %s代表的是格式化字符串,或者说为字符串进行占位操作. 如果一个变量本身不是字符串,则会自动被转化为字符串. 使用%f格式化浮点数.同时也可以提供需要的精度,如%.3f,即保留3位小 ...

  6. qsc round#2 喵哈哈村的排队(本辣鸡想七想八的,特写此博文给自己一个提醒)

    该oj是qsc自己写的比赛,友情链接:http://qscoj.cn/ 喵哈哈村的排队 发布时间: 2017年2月26日 16:13   最后更新: 2017年2月26日 16:14   时间限制: ...

  7. BZOJ 4027:[HEOI2015]兔子与樱花(贪心+树形DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4027 [题目大意] 樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1 ...

  8. 【带权并查集】【离散化】vijos P1112 小胖的奇偶

    每个区间拆成r和l-1两个端点,若之内有偶数个1,则这两个端点对应的前缀的奇偶性必须相同,否则必须相反. 于是可以用带权并查集维护,每个结点储存其与其父节点的奇偶性是否相同,并且在路径压缩以及Unio ...

  9. bzoj 1236: longpo的回文

    1236: longpo的回文 题目描述 一个字符串如果从左到右和从右到左读的结果是一样的,我们称之为回文串.现在给定一个字符串,我们有三种操作: 1.     添加一个字母在任何位置(可以在首尾添加 ...

  10. python基础之模块,面向对象

    hash 什么是hash? hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值 为何用hash? hash值有三大特性: 1.只要传入的内容一样,得到的hash值必然一样 2.只要使 ...