在数组中使用initWithCapacity时的死存储

时间:2015-01-15 16:17:15

标签: ios arrays

标题说明了一切。这是我的deadstore警告的位置:

//"objects" is just an array that I have above
NSMutableArray *arr = [[NSMutableArray alloc]initWithCapacity:[objects count]];
arr = [methodReturningAnArray:withArrayParam];   //i give "objects" as param

它表示value stored during the initialization is never read行上的[[alloc]init]

但是我已经读到在init期间给阵列定义一个大小是更优的,在这里我可以负担得起。有什么我做错了还是有一些魔法涉及?

1 个答案:

答案 0 :(得分:3)

您在此处使用值初始化arr

NSMutableArray *arr = [[NSMutableArray alloc]initWithCapacity:[objects count]];

然后您立即覆盖该值并在此处为其指定 new 值:

arr = [methodReturningAnArray:withArrayParam];

相反,只需:

NSMutableArray *arr = [methodReturningAnArray:withArrayParam];

如果要修改数组的各个元素,则初始化具有容量的NSMutableArray是最佳选择。你在这里做的是替换阵列批发。