Zev*_*erg 3 iphone objective-c ios4 ios
我有一个由此创建的NSNumber对象数组:
myArray = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithDouble:0.0],
[NSNumber numberWithDouble:0.0],
[NSNumber numberWithDouble:0.0],
[NSNumber numberWithDouble:0.0],
[NSNumber numberWithDouble:0.0], nil];
Run Code Online (Sandbox Code Playgroud)
(虽然刚发生在我身上,我本可以做到的
myArray = [NSMutableArray arrayWithObjects: object1, etc..., nil];
Run Code Online (Sandbox Code Playgroud)
并完全跳过了alloc.哪个更好?)
无论如何,这与我的问题相关:
在应用程序的整个生命周期中,值都会发生变化.在某一点上,我想将它们全部重置为零.我现在就是这样做的:
for (NSNumber *number in myArray) {
number = [NSNumber numberWithDouble:0.0];
}
Run Code Online (Sandbox Code Playgroud)
但静态分析器会发出警告,因为它认为"数字"是一个未使用的变量(技术上是 - 设置然后再也不用).有没有更好的方法将阵列的所有元素归零?也许用新的阵列替换阵列?什么是最快的,避免静态分析警告?
关于创建数组,请记住alloc+之后initWithObjects:需要显式释放,而arrayWithObjects:方便方法则不会(并且除非保留它,否则它将无法在运行循环的迭代中存活).
for (NSNumber *number in myArray) {
number = [NSNumber numberWithDouble:0.0];
}
Run Code Online (Sandbox Code Playgroud)
这个循环不符合你的想法.number只是指向一个NSNumber实例,而你所做的只是改变number为指向另一个实例NSNumber,它不会修改NSNumberin 的原始实例myArray.
NSNumber实例是不可变的,因此将它们全部设置为零的唯一方法是完全删除内容myArray并将其填充[NSNumber numberWithDouble:0.0]
NSUInteger count = [myArray count];
[myArray removeAllObjects];
while(count--)
[myArray addObject:[NSNumber numberWithDouble:0.0]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1789 次 |
| 最近记录: |