今天复习tableViewController,写了段添加地区的代码。实现根视图显示市名和人数(detailLabel),点击cell显示下面的县或者区。NavigationBar右上角+点击可以新增内容,也就是编辑模式。代理反方向传值给第一个tableView。
运行后,出现了错误:
2015-07-13 15:04:31.024 Demo_UITableViewC_Maps[897:17540] -[__NSArrayI addObject:]: unrecognized selector sent to instance 0x7fbaca4c13f0
2015-07-13 15:04:31.030 Demo_UITableViewC_Maps[897:17540] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x7fbaca4c13f0'
还有一长段没有贴上去,出问题但是在添加内容的代码上,但传值过程多次检查,都没有发现问题的。在网上查了下,出现这段话,一般是内存方面的原因。找带有addObject的代码,才发现,因为一开始是定义的一个Array,后来改成了MutableArray,但在属性定义的时候,写的是@property (nonatomic,copy)NSMutableArray * areas;将copy改成strong后,完美运行。
这个copy,一般是用在NSString定义的时候,一开始写的是NSArray,用起来也无妨,但对于可变的,这个就错误了。对于copy strong weak 和retain的运用,还是太随性了,内存优化方面,还是要注意。