_dataSource = [NSMutableArray array];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"离我最近" forKey:@"type"];
[dict setObject:@"找出离您当前位置最近的所有商家" forKey:@"detail"];
[_dataSource addObject:dict];
[dict removeAllObjects];
[dict setObject:@"人气" forKey:@"type"];
[dict setObject:@"人气反应一个商家受欢迎的程度" forKey:@"detail"];
[_dataSource addObject:dict];
[dict removeAllObjects];
[dict setObject:@"热度" forKey:@"type"];
[dict setObject:@"热度反应一个商家被用户认可的成都" forKey:@"detail"];
[_dataSource addObject:dict];
[dict removeAllObjects];
[dict setObject:@"系数" forKey:@"type"];
[dict setObject:@"系数是一个商家是否优秀的体现" forKey:@"detail"];
[_dataSource addObject:dict];
最后结果是_dataSource中有四个一模一样的字典。都是{type:系数,detail:系数是一个商家是否优秀的体现}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你要重新认识一下指针,引用,相对的关系。
你目前的代码,加了4个相同的引用给_dataSource,4个对象指向一个地址。
因为当把 dict 加入到 _datasource 时,二者的指针指向的是同一个内存地址,你看一下 iOS 的指针吧
字典当然是 kv 存储的啦,你 key 都是@"detail",代码的意思就是一遍一遍的覆盖 dict[@"detail"] 这个的值……
还有感觉你这 dataSource 实现的有问题,dataSource 不应该是实现
啥啥啥啥
的协议的类才叫dataSource
么?你弄一个 items 来做 dataSource 是不是有点不妥呢?你再想想?是不是细思极恐
呢?不要紧张,仔细看下这篇文章:http://objccn.io/issue-1-1/
往字典中添加object是retain操作,所以都是对同一份对象dict进行removeAllObjects和setObject的操作