1. 程式人生 > >for 迴圈巢狀 while 的神奇問題

for 迴圈巢狀 while 的神奇問題

在Xcode7中寫了一段OC程式碼,在一個for迴圈中嵌套了一個while迴圈。因為for迴圈中有一個非同步執行,我想等非同步執行完,再執行下一個for迴圈,所以用while迴圈做了一個等待。

程式碼如下:

BOOL flag = NO;
for (id obj in array) {
    // 執行非同步方法, 執行完後設置flag=YES;
    ......

    while(true) {
         if (flag)
             break;
    }
}

我原以為break,只能跳出最近的一個迴圈,也就是隻跳出while迴圈。

結果發現了一個神奇的問題:

在debug模式下,確實跟我的預期一樣,只跳出了while迴圈,然後進入下一個for迴圈。

但是!!!當我切換到release模式下,break跳出了for迴圈!!!

我在build setting裡,大概對比了release模式及debug模式的設定,沒發現跟這種編譯相關的不同選項。

不知哪位大神能解答我疑惑???我會繼續跟進,看看什麼到底是什麼原因。