//1. NSArray

    EOItems *eOItems = [[EOItems alloc] init];
eOItems.ID = [NSNumber numberWithInt:];
NSArray *arr = [NSArray arrayWithObjects:eOItems, nil];
eOItems.ID = [NSNumber numberWithInt:];
NSLog(@"eOItems.ID =%@, ((EOItems *)[arr objectAtIndex:0]).ID=%@", eOItems.ID, ((EOItems *)[arr objectAtIndex:]).ID);
//打印结果: eOItems.ID =2, ((EOItems *)[arr objectAtIndex:0]).ID=2 EOItems *eOItems2 = [arr objectAtIndex:];
eOItems2.ID = [NSNumber numberWithInt:];
NSLog(@"eOItems2 =%@, ((EOItems *)[arr objectAtIndex:0]).ID=%@", eOItems2.ID, ((EOItems *)[arr objectAtIndex:]).ID);
//打印结果: eOItems2 =22, ((EOItems *)[arr objectAtIndex:0]).ID=22 NSLog(@"eOItems.ID =%@", eOItems.ID);
//打印结果:eOItems.ID =22 //由此可见: NSArray只是存储对象的索引并没有真正复制对象, 对象由始至终只有一个 //2.NSMutableArray NSMutableArray *mutableArray = [arr mutableCopy];
((EOItems *)[mutableArray objectAtIndex:]).ID = [NSNumber numberWithInt:];
NSLog(@"eOItems.ID=%@", eOItems.ID);
NSLog(@"eOItems2.ID=%@", eOItems2.ID);
NSLog(@"((EOItems *)[mutableArray objectAtIndex:0]).ID=%@", ((EOItems *)[mutableArray objectAtIndex:]).ID);
//输出结果
//eOItems.ID=333
//eOItems2.ID=333
//((EOItems *)[mutableArray objectAtIndex:0]).ID=333 //经NSArray mutableCopy得来的 NSMutableArray, 对象也始终只有一个 NSMutableArray *mulArr = [NSMutableArray array ];
EOItems *mulItems = [[EOItems alloc] init];
mulItems.ID = [NSNumber numberWithInt:];
[mulArr addObject:mulItems];
((EOItems *)[mulArr objectAtIndex:]).ID = [NSNumber numberWithInt:];
NSLog(@"mulItems.ID=%@, ((EOItems *)[mulArr objectAtIndex:0]).ID=%@",mulItems.ID, ((EOItems *)[mulArr objectAtIndex:]).ID);
//输出结果
//mulItems.ID=222, ((EOItems *)[mulArr objectAtIndex:0]).ID=222 mulItems.ID = [NSNumber numberWithInt:];
NSLog(@"mulItems.ID=%@, ((EOItems *)[mulArr objectAtIndex:0]).ID=%@",mulItems.ID, ((EOItems *)[mulArr objectAtIndex:]).ID);
//输出结果
//mulItems.ID=333333, ((EOItems *)[mulArr objectAtIndex:0]).ID=333333

总结: NSArray和NSMutableArray区别在于后者可变可以添加,删除,修改

他们存储的都是对象的引用

EOItems *item1 = [[EOItems alloc] init];
item1.ID = [NSNumber numberWithInt:]; EOItems *item2 = [[EOItems alloc] init];
item2.ID = [NSNumber numberWithInt:]; EOItems *item3 = item1;
NSLog(@"item3.ID=%@", item3.ID); item3 = item2;
NSLog(@"item3.ID=%@", item3.ID);

二. NSArray和NSDictionary的值都不可以为空, 否则会出错,

所以在添加之前不许要验证所设的值是否为空, 避免出错

NSArray和NSMutableArray的更多相关文章

  1. iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)

    iOS学习(OC语言)知识点整理 一.OC中的数组 1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的,      可以存放重复的元 ...

  2. IOS数组NSArray与NSMutableArray知识点

    此文是对数组NSArray与NSMutableArray知识点的总结,主要是一些常见的操作,别外一些操作见其相应的文档,下面的代码部分还运用的第三方插件BlocksKit相结合: a:Foundati ...

  3. NSArray、NSMutableArray基本用法

    NSArray.NSMutableArray基本用法 一.基本操作 初始化方法:1.init返回一个空数组 2.initWithArray从已有数组初始化 3.initWithContentsOfFi ...

  4. 15.Object-C--浅谈Foundation框架OC数组NSArray与NSMutableArray

    昨天总结了一下NSString与NSMutableString,今天我在这里总结一下NSArray与NSMutableArray. NSArray数组是:不可变数组. nil 是数组元素结束的标记.O ...

  5. NSArray和NSMutableArray相互转换, 以及常用方法-备

    有时候项目中NSArray和NSMutableArray需要相互转化,下面给出相关代码1.NSArray 1.1 转化:NSMutableArray 1 NSMutableArray *mutable ...

  6. NSArray 与 NSMutableArray 的排序

    由于集合的使用过程中,经常需要对数组进行排序操作,此博客用于总结对在OC中对数组排序的几种方法 1.当数组中存放的是Foundation框架中提供的对象时,直接使用 compare:方法 如:NSSt ...

  7. NSArray、NSMutableArray和NSMutableDictionary的用法

    转自:http://www.cnblogs.com/wangpei/admin/EditPosts.aspx?opt=1 NSArray是静态的数组,就是它所指向的内容是不可改变的,它指向一段内存区域 ...

  8. NSArray和NSMutableArray的常用方法 (转)

    NSArray和NSMutableArray的常用方法 (转) (2013-09-06 15:13:46) 标签: it 分类: ios编程 初始化方法:   1.init返回一个空数组    2.i ...

  9. --NSArray与NSMutableArray用copy修饰还是strong(转)

    一.NSMutableArray 被copy.strong修饰后的变化: 把NSMutableArray用copy修饰有时就会crash,因为对这个数组进行了增删改操作,而copy后的数组变成了不可变 ...

随机推荐

  1. [C/C++基础] C语言常用函数memset的使用方法

    函数声明:void *memset(void *s, int ch, size_t n); 用途:为一段内存的每一个字节都赋予ch所代表的值,该值采用ASCII编码. 所属函数库:<memory ...

  2. 关于RESTFul初步理解

    RESTFul架构:是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. 即:Representational State Transfer 表现 ...

  3. 琐碎--选择文件夹(路径)+生产txt格式的log+数据库操作方式

    记录日常工作常用到的一些方法: 1 选择文件操作,并将文件的路径记录下来: OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = f ...

  4. AngularJS - 路由入门

    我们有很多方法让一个视图随着用户的操作进行变化. 但是,只是单单一个视图就要满足所有的需求会让代码变得非常复杂. 也许我们可以使用ng-include来引用各种模板,但这只限于部分场景. 于是我们可以 ...

  5. 每天一个linux命令(25):df 命令

    linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命 ...

  6. java中的字符串简介,字符串的优化以及如何高效率的使用字符串

    简介 String最为java中最重要的数据类型.字符串是软件开发中最重要的对象之一,通常,字符串对象在内存中总是占据着最大的空间块.所以,高效处理字符串,将提高系统的整个性能. 在java语言中,S ...

  7. iOS开发小技巧--设置按钮圆角

    方法一:代码设置 方法二:通过图形化界面

  8. windows Server2008R2 每隔一段时间自动关机解决办法

    情况描述: “我的电脑-->右键属性”中显示“已激活”,而“管理工具”中显示未激活.系统中有进程wlms.exe. 网上找了下解决方式: 1.提权工具:PSTOOLS(下载地址:http://m ...

  9. jquery 在 table 中修改某行值

    修改 table 中某行的的方法步骤如下: 1.选择要修改的行,事件触发,比如我的 双击某行时修改 2.将要修改的行,替换为input,原先的列中的值,需要放到对应的input中作为默认值 3.修改完 ...

  10. Java基础-数据类型转换

     1).简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时.  自动转换 当一个较"小"数据与一个较"大"的数据一起运算 ...