********************************************
// 可变数组构造方法
//  下边两句的定义都是不可变的
//    NSMutableArray *marray1 = [[ NSArray alloc]init];
//    NSMutableArray * marray1 = @[@"xx",@"yy"];
//默认数组没有元素
NSMutableArray * marray1 = [[ NSMutableArray alloc]init];
NSMutableArray * marray = [NSMutableArray array];
NSMutableArray * marray2 = [[ NSMutableArray alloc]initWithArray:@[@"1",@"2"]];
NSMutableArray * marray3 = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three", nil];
id objs[5] ={@"123",@"456",@"789",@"abc",@"def"};
// objs 的类型为: id [5];
// 因为objs是数组名,即首元素的地址,又因为首元素的类型为id;
//     所以:  objs的类型为: id *
NSMutableArray * marray4 = [[NSMutableArray alloc]initWithObjects: objs count:3];
NSLog(@"marray4: %@", marray4);
//  开辟80个字节的动态内存,给memory,
//       即memory指向了80个字节的合法内存
id * memory = (__bridge id *)malloc(80);
memory[0]=@"mem1";
memory[1]=@"mem2";
memory[2]=@"mem3";
memory[3]=@"mem4";
memory[4]=@"mem5";
NSMutableArray * marray5 = [[ NSMutableArray alloc]initWithObjects:memory count:3];
NSLog(@"marray5: %@", marray5);
//构造一个可变数组,初始给它10个元素空间, 但没有元素
NSMutableArray * marray6 = [[ NSMutableArray alloc]initWithCapacity:10];
//注意: marray6还是一个空数组,即没有元素存在
NSLog(@"marray6:%@", marray6);
********************************************
//给数组添加元素
//  add   insert
NSMutableArray * array = [[ NSMutableArray alloc]init];
//尾部追加一个元素
[array addObject:@"theFirstObject"];
NSLog(@"第一次调 addObject: array: %@",array);
[array addObject:@"theSecondObject"];
NSLog(@"第二次调 addObject: array: %@", array);
//尾部拼接一个数组
[array addObjectsFromArray:@[@"add1",@"add2"]];
NSLog(@"第一次调 addObjectsFromArray: array: %@", array);
//结果说明 addObject是往数组的尾部追加元素
[array insertObject:@"theInsertObject" atIndex:1];
NSLog(@"第一次调 insertObject: array: %@", array);
********************************************
//删除数组中的元素
NSMutableArray * array  = [[ NSMutableArray alloc]initWithArray:@[@"1",@"2",@"3",@"4",@"5",@"6",@"1",@"1" ]];
NSLog(@"array: %@", array);
// remove
//删除这个对象在数组中的所有出现的地方
[array removeObject:@"1"];
NSLog(@"第一次调 removeObject: array: %@",array);
//删除最后一个元素
[array removeLastObject];
//删除指下定标的元素
[array removeObjectAtIndex:0];
//删除所有的元素
[array removeAllObjects];
********************************************
//重置数组,替换数组的某个下标的元素
NSMutableArray * array = [[ NSMutableArray alloc]initWithArray:@[@"abc",@"def",@"ghi"]];
NSLog(@"原始数组: array: %@",array);
NSArray * newArray = @[@"123",@"456",@"789"];
[array replaceObjectsInRange:NSMakeRange(0, [array count]) withObjectsFromArray:newArray];
NSLog(@"全部元素被替换后的数组: array: %@",array);
[array replaceObjectAtIndex:1 withObject:@"[theFisrtReplaceObject]"];
NSLog(@"替换某一个下标的元素:array: %@",array);
NSLog(@"新替换后的元素为: %@", [array objectAtIndex:1]);
********************************************
//数组对象的其它常用方法
NSArray * array = @[@"one",@"two",@"three"];
//获取数组的首元素
id obj1 = [array firstObject];
NSLog(@"obj1: %@", obj1);
//获取数组的尾元素
id obj2 = [array lastObject];
NSLog(@"obj2: %@", obj2);
********************************************
********************************************

objective-c系列-NSMutableArray的更多相关文章

  1. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  2. Objective - C NSArray不可变数组和NSMutableArray可变数组

    OC中存储数据最常用 的两个容器就是数组和字典,而作为最常用的,应该了解这所有的特点,及用法. OC中的数组是一个容量,有序的管理了一系列元素,并且存放在数组里的元素,必须是对象类型. 不可变数组,见 ...

  3. Objective-C( Foundation框架 一 数组(NSMutableArray))

    NSMutableArray:可变数组 NSMutableArray是NSArray的子类 创建NSMutableArray数组对象 添加数组元素: // 创建数组 NSMutableArray *a ...

  4. iOS开发核心语言Objective C —— 全部知识点总结

    本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基 ...

  5. iOS开发系列--数据存取

    概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...

  6. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  7. iOS开发系列--让你的应用“动”起来

    --iOS核心动画 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建 ...

  8. iOS开发系列--并行开发其实很容易

    --多线程开发 概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的, ...

  9. Objective C中的ARC的修饰符的使用---- 学习笔记九

    #import <Foundation/Foundation.h> @interface Test : NSObject /** * 默认的就是__strong,这里只是做示范,实际使用时 ...

随机推荐

  1. 小技巧找出一个php的cron脚本出问题的代码行

    这个小技巧虽然很小,但是很有用. 我写了一个cron脚本,但是隔一天发现,这个昨天的cron脚本还一直在跑着,没有停下来,一定是里面有个程序堵住了. 但是如果我重新跑又需要很多时间.这个怎么办? 现在 ...

  2. ADO.NET封装的SqlHelper

    参照别人的方法,顺便再次复习下ADO.NET的相关知识.为自己的类库做准备. namespace Common.SqlHelper { /// <summary> /// ADO.NET- ...

  3. 【C#】第2章学习要点

    分类:C#.VS2015 创建日期:2016-06-15 教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.本章要点 C#数据类型分两大类:值类型.引用类型. 值类型 ...

  4. 【C#进阶系列】15 枚举类型和位标志

    实际上本章就只讲枚举类型,因为位标志本来就可以当做一个特殊的枚举类型. 关于枚举类型 枚举类型是一种消灭魔法数字的好方法,使程序更容易编写,阅读和维护. 枚举类型是值类型,然而有别于其它值类型,枚举类 ...

  5. PHP程序员7小时学会Kotlin 第二小时

    Kotlin中,一切皆对象:PHP则并非一切皆对象,甚至不需要对象的存在即可完成系统功能开发,我们现在可以接触到的旧的系统都可以说明这一点. 基本数据类型 数值型 类型 位长 双精度浮点型Double ...

  6. RPM Version Comparison

    https://fedoraproject.org/wiki/Archive:Tools/RPM/VersionComparison?rd=Tools/RPM/VersionComparison ht ...

  7. MVC-自定义过滤器

    APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. 自定义过滤器: 若要自定义一个过滤器,则 ...

  8. Scalaz(11)- Monad:你存在的意义

    前面提到了scalaz是个函数式编程(FP)工具库.它提供了许多新的数据类型.拓展的标准类型及完整的一套typeclass来支持scala语言的函数式编程模式.我们知道:对于任何类型,我们只需要实现这 ...

  9. BaseActivity的抽取

    Activity有些公共部分,比如setContentView.Activity管理.初始化操作.联网操作.Activity跳转.关闭当前Activity.保存用户登录信息.读取用户登录信息等. 我们 ...

  10. 今天做项目时,用到了好多关于js的知识点,有的忘记了,然后晚上回来自己整理一番,明天继续整理。哈哈,分享给大家。

    javascript 数据类型 typeof (直接量/变量)-------判断数据类型 简单数据类型(栈,空间小,速度快) string字符串 用引号引起来的文本 number数字 所有数字 NaN ...