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后的数组变成了不可变 ...
随机推荐
- Git.Framework 框架随手记--SQL配置文件的使用
前面几篇文章讲到了如何使用框架进行简单结构的增删改查操作,由于个人能力有限在对于复杂的SQL操作面前也是无能为力,只能自己动手来写SQL语句.在Git.Framework中提供了一个公共的接口来直接操 ...
- 20.C#LINQ基础和简单使用(十一章11.1-11.2)
终于看到了第11章,之前虽然也有看过,但没有太仔细,在工作中也偶尔会使用,但不明白其中的原理,那现在就来讲讲LINQ,做一做书虫~~ 首先先了解下LINQ的三个要点: LINQ不能把非常复杂的查询表达 ...
- MyEclipse8.5快速搭建SSH框架
来源于:http://jingyan.baidu.com/article/a378c960a78125b3282830cc.html MyEclipse8.5快速搭建SSH框架 使用版本: Strut ...
- logic标签用法
logic <logic:iterate> <% Dog dog1=new Dog(); dog1.setAge(2); dog1.setName("xiaoming& ...
- WCF学习(二)对控件简单了解以及4个文本控件的简介
WPF基础控件 系统默认提供的基础控件: 文本控件介绍与用法 Label控件 label控件:一般用户描述性文字显示. 在Label控件使用时,一般给予用户提示.用法上没有什么很特殊的,label控件 ...
- 反射工具类——ReflectUtils
测试方法:根据已知的方法名,来反射调用方法 package com.redmoon.forum.job; import java.util.ArrayList; import java.util.Li ...
- Log4Net使用详解
1.Log4Net环境的搭建与基本配置 (1)Log4Net框架介绍 Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版.我们可以控制日志信息的输出目的地.L ...
- python多态
多态是面向对象语言的一个基本特性,多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式.在处理多态对象时,只需要关注它的接口即可,python中并不需要显示的编写(像Java一 ...
- Android 实现卫星菜单
步骤:一:自定义ViewGroup 1.自定义属性 a.attr.xml b.在布局文件中使用activity_main.xml c.在自定义控件中进行读取 2.onMeasure 3.onLayou ...
- spring 注解简单使用
一.通用注解 1.项目结构: 2.新建Person类,注解@Component未指明id,则后期使用spring获取实例对象时使用默认id="person"方式获取或使用类方式获取 ...