NSArray和NSMutableArray
//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的更多相关文章
- iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)
iOS学习(OC语言)知识点整理 一.OC中的数组 1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的, 可以存放重复的元 ...
- IOS数组NSArray与NSMutableArray知识点
此文是对数组NSArray与NSMutableArray知识点的总结,主要是一些常见的操作,别外一些操作见其相应的文档,下面的代码部分还运用的第三方插件BlocksKit相结合: a:Foundati ...
- NSArray、NSMutableArray基本用法
NSArray.NSMutableArray基本用法 一.基本操作 初始化方法:1.init返回一个空数组 2.initWithArray从已有数组初始化 3.initWithContentsOfFi ...
- 15.Object-C--浅谈Foundation框架OC数组NSArray与NSMutableArray
昨天总结了一下NSString与NSMutableString,今天我在这里总结一下NSArray与NSMutableArray. NSArray数组是:不可变数组. nil 是数组元素结束的标记.O ...
- NSArray和NSMutableArray相互转换, 以及常用方法-备
有时候项目中NSArray和NSMutableArray需要相互转化,下面给出相关代码1.NSArray 1.1 转化:NSMutableArray 1 NSMutableArray *mutable ...
- NSArray 与 NSMutableArray 的排序
由于集合的使用过程中,经常需要对数组进行排序操作,此博客用于总结对在OC中对数组排序的几种方法 1.当数组中存放的是Foundation框架中提供的对象时,直接使用 compare:方法 如:NSSt ...
- NSArray、NSMutableArray和NSMutableDictionary的用法
转自:http://www.cnblogs.com/wangpei/admin/EditPosts.aspx?opt=1 NSArray是静态的数组,就是它所指向的内容是不可改变的,它指向一段内存区域 ...
- NSArray和NSMutableArray的常用方法 (转)
NSArray和NSMutableArray的常用方法 (转) (2013-09-06 15:13:46) 标签: it 分类: ios编程 初始化方法: 1.init返回一个空数组 2.i ...
- --NSArray与NSMutableArray用copy修饰还是strong(转)
一.NSMutableArray 被copy.strong修饰后的变化: 把NSMutableArray用copy修饰有时就会crash,因为对这个数组进行了增删改操作,而copy后的数组变成了不可变 ...
随机推荐
- 重写TiledServiceLayer实现Arcgis访问Mapabc地图服务 (转载)
package com.baixin.main;/** * * @ClassName: MapAbcToArcGISTLayer * @Description: ArcGIS访问MapAb ...
- cookie的操作
比如这样如果一个网站上有两个域名的时候,我们需要考虑,两个域名下的cookie. 我们所说的跨域只的就是lesport.com和le.com js的cookie是不能跨域的,为了防止过大. js增加删 ...
- css兼容性的问题
https://www.douban.com/note/314793848/ 随意的一个博客ie6的兼容 这个博客比较好 http://blog.csdn.net/chuyuqing/article/ ...
- [USACO2002][poj1947]Rebuilding Roads(树形dp)
Rebuilding RoadsTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 8589 Accepted: 3854Descrip ...
- 序列化和反序列化的几种方式(JavaScriptSerializer 、XmlSerializer、DataContractSerializer)(一)
JavaScriptSerializer 类 为启用 AJAX 的应用程序提供序列化和反序列化功能. 命名空间: System.Web.Script.Serialization 程序集: Sys ...
- HTML DOM 基础
$. HTML DOM 定义了访问和操作 HTML 文档的标准方法. DOM 是 W3C(万维网联盟)的标准. $. DOM树. $. W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它 ...
- Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
WARNING: Failed to register in JMX: javax.naming.NamingException: Could not load resource factory cl ...
- java日期加减
1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- hdu1890 伸展树(区间反转)
对于大神来说这题是水题.我搞这题花了快2天. 伸展树的优点有什么,就是树不管你怎么旋转序列是不会改变得,并且你要使区间反转,只要把第k大的点转到根结点,那么它的左子树就是要交换的区间[l,r),然后交 ...
- CAS做单点登陆(SSO)——集成BIEE 11g
BIEE 11G和CAS集成零代码编写,只需配置. 更改BIEE analytics应用的web.xml 将analytics.war解包(使用7-zip或者Win-rar就可以),然后修改WEB-I ...