美文网首页
关于OC可变数组的问题

关于OC可变数组的问题

作者: 一米押金 | 来源:发表于2017-02-15 08:41 被阅读0次

昨天做到的是有一个需求,就是,如图:


在请求数据下来之后,顶部的title不会展示“热门”这个菜单的内容,但是内容cell有内容,必须得展示,swift是这么写的(可能代码词汇记忆错误,但是大体上是如此的)

var tempArr = response.groups
tempArr.removefirest()
self.gameView.groups = tempArr

我用OC也单纯的照葫芦画瓢了

NSMutableArray *tempArr = [[NSMutableArray alloc]init];
tempArr = self.response.groups;
[tempArr removeObjectAtIndex:0];
self.menuView.groups = tempArr;

然而结果就是内容cell也把“热门”给删除了,但是找原因的时候,是不是这两个数据关联是不是一样的,是不是因为单例原因,或者说早期是
NSMutableArray *tempArr = self.response.groups,没有初始化这个可变数组造成的,想了很多原因,甚至打断点,看哪里发生了变化,甚至自己设置的set方法,最后发现一个破绽就是,我改变tempArr的时候,self.response.groups的值也发生了变化,然后就看他们的地址,地址竟然都是一样的!那么问题发现:
tempArr = self.response.groups;这句话不仅仅是传值,也是传地址,也就是---“深拷贝”,所以无论谁的值发生变化都会改变,这点跟swift是不一样的,所以解决办法,只能如此:

#pragma mark -- 因为数组的拷贝,是深拷贝,连地址都拷贝都是一样的,所以解决办法只能是遍历(根据swift的有感,swift的语法就很简单,就这么单纯传值,地址都不同)
        NSMutableArray *tempArr = [[NSMutableArray alloc]init];
        for (int i=1; i<self.response.groups.count; i++) {
            [tempArr addObject:self.response.groups[i]];
        }
        self.menuView.groups = tempArr;
    }];

由于第一个元素不要直接从i=1开始遍历即可

相关文章

  • 关于OC可变数组的问题

    昨天做到的是有一个需求,就是,如图: 在请求数据下来之后,顶部的title不会展示“热门”这个菜单的内容,但是内容...

  • 3大数据结构类之——不可变数组NSArray

    OC的数组同样分为不可变数组和可变数组,可变数组是不可变数组的子类,先来说不可变速数组 数组查询的相关方法 数组枚...

  • swift基础-4-数组

    数组定义:OC:有值数组 空数组 不可变数组:NSArray可变数组:NSMutableArray swift:有...

  • NSArray / NSMutableArray 简介和转换

    NSArray(不可变数组) / NSMutableArray (可变数组) 在OC中,我们用 NSArray ...

  • Swift基础语法-数组--对比OC

    一. 数组定义(比较 OC 与 Swift 的数组) 1.1. 有值数组 1.2. 空数组 1.3. 可变与不可变...

  • iOS 中NSArray

    //OC 的数组 可以存储不同类型的对象 ,OC 的数组只能存储对象 //不可变数组 NSArray *array...

  • # 集合

    数组 数组使用 [] 定义,这一点与 OC 相同 遍历 通过下标获取指定项内容 可变&不可变let 定义不可变数组...

  • swift基本写法总结(二)

    25.数组 跟oc有很大不同的是,oc中的可变和不可变数组是用两个类NSMutableArray 和NSArray...

  • Swift学习系列 数组

    一、数组的基本操作 1、数组的定义 Swift中的数组跟OC类似 分为可变数组和不可变数组。数据类型为Array。...

  • 集合

    数组 数组使用[]定义,这一点与OC相同 遍历 通过下标获取指定项的内容 可变&不可变let 定义不可变数组var...

网友评论

      本文标题:关于OC可变数组的问题

      本文链接:https://www.haomeiwen.com/subject/dfofwttx.html