NSArray和NSMutableArray_weixin_30667649的博客-程序员宅基地

//1. NSArray
    
    EOItems *eOItems = [[EOItems alloc] init];
    eOItems.ID = [NSNumber numberWithInt:1];
    NSArray *arr = [NSArray arrayWithObjects:eOItems, nil];
    eOItems.ID = [NSNumber numberWithInt:2];
    NSLog(@"eOItems.ID =%@, ((EOItems *)[arr objectAtIndex:0]).ID=%@", eOItems.ID, ((EOItems *)[arr objectAtIndex:0]).ID);
    //打印结果: eOItems.ID =2, ((EOItems *)[arr objectAtIndex:0]).ID=2
    
    EOItems *eOItems2 = [arr objectAtIndex:0];
    eOItems2.ID = [NSNumber numberWithInt:22];
    NSLog(@"eOItems2 =%@, ((EOItems *)[arr objectAtIndex:0]).ID=%@", eOItems2.ID, ((EOItems *)[arr objectAtIndex:0]).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:0]).ID = [NSNumber numberWithInt:333];
    NSLog(@"eOItems.ID=%@", eOItems.ID);
    NSLog(@"eOItems2.ID=%@", eOItems2.ID);
    NSLog(@"((EOItems *)[mutableArray objectAtIndex:0]).ID=%@", ((EOItems *)[mutableArray objectAtIndex:0]).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:111];
    [mulArr addObject:mulItems];
    ((EOItems *)[mulArr objectAtIndex:0]).ID = [NSNumber numberWithInt:222];
    NSLog(@"mulItems.ID=%@, ((EOItems *)[mulArr objectAtIndex:0]).ID=%@",mulItems.ID, ((EOItems *)[mulArr objectAtIndex:0]).ID);
    //输出结果
    //mulItems.ID=222, ((EOItems *)[mulArr objectAtIndex:0]).ID=222
    
    mulItems.ID = [NSNumber numberWithInt:333333];
    NSLog(@"mulItems.ID=%@, ((EOItems *)[mulArr objectAtIndex:0]).ID=%@",mulItems.ID, ((EOItems *)[mulArr objectAtIndex:0]).ID);
    //输出结果
    //mulItems.ID=333333, ((EOItems *)[mulArr objectAtIndex:0]).ID=333333

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

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

 

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

 

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

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

转载于:https://www.cnblogs.com/apem/p/4123357.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30667649/article/details/97167746

智能推荐

安装kali linux 遇到输入密码和账户无法登陆问题解决方法_chucedan9177的博客-程序员宅基地

适用 版本kali-linux-2018.2-amd64.iso 密码和我们安装时设置的密码一样 ,安装之后默认用户名 是root 当我们安装后直接 用root 登陆 Login :root //enter password:12345mm (安装时设置密码) ...

alias带参数_chinawilliam2008的博客-程序员宅基地

每次用cd命令都很麻烦,要先cd,再ls才能显示目录下面的文件。所以想cd过后自动显示文件,于是便想到了alias。 但是alias是不能直接带参数的,比如: alias cd='cd $1;ls' 这种命令是无效的,所以网搜了一下,发现可以用函数来实现。 alias...

H.264/AAC supports in Flash Player 9_DerryZhang的博客-程序员宅基地

H.264/AAC supports in Flash Player 9 Its well known that the H.264 and AACdecoding has been supported by the new Flash Player 9 Update3(9.0.115), which may mean a whole new era for high

局域网基本原理_chunyang315的博客-程序员宅基地

定义 局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成 主要局域网技术1 . 令牌环网——淘汰 在令牌环网络中,拥有“令牌的...

ISTQB基础级考试心得_istqb tm tta ta 难度_crystalyangbjut的博客-程序员宅基地

最近换了个工作,是个事业单位,证书有利于晋升,于是想快速考个证,最后选择了考ISTQB。只准备了两个星期。成绩还没出来,但是考试的时候觉得题还是比较简单的。成绩出来后会更新。1. 是否报培训班?因为想快速考证,所以一开始是想报个班,能快速通过,结果问了一圈,发现都太贵了,考试+报名费要4000多,于是决定自己找资料看书。2.如何准备考试?1)下载并打印大纲、模拟题,官网上可以考试大纲、模拟题2)看一遍大纲3)某宝上买了个99元视频,里面有大纲讲解和模拟题讲解4)看完视频再次看大纲

wow(mangos模拟器) 的物品生成器---wowItemEdit 1.0_cling_clang的博客-程序员宅基地

用了2天的时间终于把wow(mangos模拟器) 的物品生成器写完了,少看了好多好电视:(多少介绍下这个东东吧运行环境:    WinXP        .net2.0        XP自带记事本程序这些日子没事干弄wow模拟器玩,一开始研究spell.dbc~~~~后来没坚持下来太麻烦了,我喜欢把同事的名字放在游戏里,呵呵,玩三国系列时就常这样,所以我想把一些物品的名称弄成同事的名字YY一下嘿

随便推点

部署Jenkins实现Git提交后自动构建的踩坑记录_SpringInDawn的博客-程序员宅基地

1、创建工程后项目的"源码管理"->"Git"->"Repositories"配置中,Repository URL的地址填写需要注意:如果你的URL是http协议的地址,直接填入就好;如果你的URL是ssh协议的地址,则需要把"ssh://"去掉之后再填入。例如:完整地址为ssh://[email protected]:test.git,填入的时候只需要填入[email protected]:test...

学习推荐书籍--C语言_讲解c语言语法细节的书_EricOnTheWayIT的博客-程序员宅基地

前言C语言推荐书籍,都是免登陆下载、free的,含入门、进阶和其它参考。入门类《The C programming_Language》下载地址      C语言之父得作品权威性毋庸置疑,本书适合入门,学习C语言的基本语法和使用,入门看该书,本书近300页,别看国内的谭浩强的书(据说谭浩强的书都是东凑西拼的),里面很多误导程序员的细节。虽然书籍出版时间

关于 Windows6.1-KB2999226-x64.msu 此更新不适用你的计算机解决办法_Hello_wshuo的博客-程序员宅基地

前言今天被这个破问题坑了很长时间,网上一大堆扯跳过那个检查,通过提取 cab 文件然后直接用命令安装,我可以明确的告诉你不是那样的解决的,因为我实际用命令装过也装不上(这里我吐槽一下,我猜你最初的问题是丢失某个dll,然后发现想解决一个问题出现了另一个问题,当你看到这篇文章时,我相信这是你解决问题的最后一步了)解决办法1.安装sp1补丁首先你要清楚你电脑是不是对应的架构 x86安装 x86...

ORA-600(krfg_first_barrier1)错误_普通网友的博客-程序员宅基地

客户在打开FLASHBACK的时候碰到了这个错误。详细的错误如下:Tue Oct 18 10:55:02 2011ALTER DATABASE MOUNTT...

解决python中TypeError: not enough arguments for format string_monaxu的博客-程序员宅基地

def a(x,y): print("%s : %s "%x,y)如上代码,我定义了个含两个参数的函数,传参时报错如下。TypeError: not enough arguments for format string将参数用括号括起后(如下所示),问题就解决了。def a(x,y): print("%s : %s "%(x,y))下面是操作中的截图。总结:在学习python时,要注意下pyt...

Ketama一致性哈希算法的实现_hash_wrapper_tz_sz的博客-程序员宅基地

一、修改test程序在test程序中加入memcached_behavior_set_distribution(memc, MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY),设置分布式算法。二、memcached_behavior_set_distributionmemcached_behavior_set_distribution

推荐文章

热门文章

相关标签