我在某處看到以下三個代碼正在做同樣的事情。控制iOS上的數組迭代的變量5
使用循環:
BOOL stop = 0;
for (int i = 0 ; i < [theArray count] ; i++) {
NSLog(@"The object at index %d is %@",i,[theArray objectAtIndex:i]);
if (stop)
break;
}
使用快速列舉:
int idx = 0;
BOOL stop = 1;
for (id obj in theArray) {
NSLog(@"fast emuration approch @ x %d is %@",idx,obj);
if (stop)
break;
idx++;
}
使用塊:
[theArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
NSLog(@"the block approch at x %d is %@",idx,obj);
}];
但我不明白的是 -
- 如何在塊方法中設置從外部停止?
- 如何在塊方法中設置idx?
- 布爾聲明在塊方法中是不尋常的。爲什麼? (因爲我沒能塊還將內更改值,是不是因爲這樣的聲明?)
感謝卡爾...但是,當我們設置我......我們初始化它的價值..在這裏,我無法初始化價值......當我在爭論中這樣做時,它給了我警告。 – 2013-03-01 05:53:18
並且它不允許我在指針內更改BOOL的值......我不明白爲什麼它在那裏被聲明爲指針? – 2013-03-01 05:54:31
對不起,你能否以不同的方式說出來?什麼說法?關於你的第二個問題 - 當你需要停止迭代時,執行'* stop = YES;'它們給你一個指針,這樣你就可以在調用上下文中操作變量的值,就像在函數調用中一樣。 – 2013-03-01 05:58:58