为了优化,居然还吃了一次坑
2016-02-27 本文已影响24人
brzhang
我为了避免在循环中重复实例化一个类,结果自己居然踩到了一枚地雷!真是大意了,还要测试时及时发现。
这是我最开始的代码:
![](https://img.haomeiwen.com/i1019822/90be98c3378c37a1.png)
这是调试时,contents变量的内存数据
![](https://img.haomeiwen.com/i1019822/291e58ec1d0e4f64.png)
这是我“优化”后的代码,注意,在循环体中去掉了content实例化,直接用外面那个content
![](https://img.haomeiwen.com/i1019822/9da30126282bc2b3.png)
然后,下面这幅图就是优化后,contents的结果!!!
![](https://img.haomeiwen.com/i1019822/df1d07472166a299.png)
问题分析
其实很简单,在swift中,甚至很多编程语言中,class类型都是引用类型,因此content其实都是一个,所以改来该去都是改的那一个,自然最终数组中的元素都会变成最后一个。
比如java里面也是也一样的,这里有一个测试
![](https://img.haomeiwen.com/i1019822/95490aa713e62124.png)