iOS 中由数组 NSArray 与 NSMutableArray 的使用理解偏差引发的多宗血案

简介: iOS 中由数组 NSArray 与 NSMutableArray 的使用理解偏差引发的多宗血案 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

iOS 中由数组 NSArray 与 NSMutableArray 的使用理解偏差引发的多宗血案

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。




这个简单问题,一直以来,五年苹果开发经验告诉我,不值得一提,也没有什么可提的。

不过,今天我犯了一个不值得一提的错误,一直以来,自认为不值得一提的错误,也是不断忽视之后,由认识变得陌生而导致的小错误。

题目是:遍历一个数组,符合条件的,加入另一个数组,同时从这个数组中移除掉,以节约存储空间。

分析:

1、由于是同一个对象在数组之间的加减,这个只是在加、减指针而已,只是增加引用计数,并没有增加实际内存空间分配;

2、加到没啥问题,我声明的目标数组是 NSMutableArray ,减的时侯,我使用的是 delete 方法,不过这个方法确实存在;

声明

NSArray *rows = [fileContent componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
NSMutableArray *geometryRows = [[NSMutableArray alloc] init];
使用

[geometryRows addObject:row];
[rows delete:row];
这里借 UIResponder 犯了这样的一个错误,自动提示出了这个类的 delete 方法;

而实际上 rows 是 NSArray 其元素是不可编辑的,改成如下即可:

    NSMutableArray *rows = [NSMutableArray arrayWithArray:[fileContent componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]];

不过,当前这个题目,就是个没事儿找事儿的题目,为什么这么说呢?原因如下:

1、再增加,也是增加原对象的引用计数和指针地址,并不会有新的原对象内容复本内存发生分配,所以附增的内存分配很小,不用考虑;

2、离开当前环境,声明的指针不存在了,原指针所指向的内容,不再有指针索引,则 ARC 在编译时会检测到,为其添加释放内存的代码,故无需考虑内存泄漏;

3、由此可见,过分担心,没事儿找事儿,引发了这么多血案,浪费了这么多吐沫,希望还能有一点作用,就是用来警醒世人,不要再犯由此引发的一系列理解上偏差而造成的多宗血案;


钦此!



目录
相关文章
|
安全 iOS开发
iOS开发 - 字面语法之数组注意事项
iOS开发 - 字面语法之数组注意事项
65 0
|
存储 机器学习/深度学习 缓存
iOS - 链表、数组区别及常见算法
iOS - 链表、数组区别及常见算法
|
存储 自然语言处理 Java
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(二)
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(二)
218 0
|
Web App开发 C语言 iOS开发
【IOS 开发】Object - C 数组使用详解(二)
【IOS 开发】Object - C 数组使用详解(二)
107 0
|
iOS开发 索引
【IOS 开发】Object - C 数组使用详解(一)
【IOS 开发】Object - C 数组使用详解(一)
354 0
|
iOS开发
IOS学习笔记十九NSArray和NSMutableArray
IOS学习笔记十九NSArray和NSMutableArray
82 0
|
iOS开发
iOS NSArray 打印汉字问题
采用分类的方法来解决 NSArray+Log.h #import @interface NSArray (Log) @end @interface NSDictionary (Log) @end NSArray+Log.
734 0
|
iOS开发
iOS post提交数据有嵌套数组的处理方法
2017年11月21日17:11:43 解决办法, 修改iOS框架里的代码: http://www.jianshu.com/p/130daa0c2fe7 确实有效, 要不然,  内层的每一个键值对都会变成一个单独的dic, 这样原来的两层就变成了3层:     ===>
1122 0
|
自然语言处理 iOS开发 索引