Nes*_*tor 1 int for-loop objective-c nsarray
我没有注意到[NSArray计数]的后果,一遍又一遍地制造错误unsigned.今天的例子相对不寻常:
for (int i = -1; i < [myArray count]; i++) {
Run Code Online (Sandbox Code Playgroud)
这个循环从不执行!你需要(int)[myArray count].我通常的错误是:
for (int i = 0; i < [myArray count] - 1; i++) {
Run Code Online (Sandbox Code Playgroud)
如果数组为空,则此循环基本上永远执行,因为[myArray count]-1溢出了unsigned int.
我尽可能使用快速枚举,但在这个项目中,我经常需要在索引i-1和i+1处理对象时引用对象i,它似乎并不适合它.避免这些错误的其他任何提示,除了不那么无能之外?
首先,有一个警告你可以打开来解决这些问题.我认为它是"符号比较",命令行标志是-Wsign-compare.
如果你想迭代数组的元素,但你需要索引,最好的方式(在我看来)是-enumerateObjectsUsingBlock:
[myArray enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop)
{
NSlog(@"Object at index %lu is %@", (unsigned long) idx, obj);
if (idx > 0)
{
NSlog(@"Previous object is %@", [myArray objectAtIndex: idx - 1]);
}
if (idx + 1 < [myArray count])
{
NSlog(@"Next object is %@", [myArray objectAtIndex: idx + 1]);
}
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |