剛剛在Stack Overflow看到一個小問題,問題是這樣的,在Xcode寫objective-c程式時,如果for-loop中只有一行statement,加不加上括號,會影響在debugger中的行為,例如:
版本一:
int i;
for(i = 0; ; i++) {
if(i == 4)
break;
}
版本二:
int i;
for(i = 0; ; i++)
if(i == 4)
break;
當把breakpoint設在for那一行,然後用step over一行一行追蹤流程時,版本一會是這樣的:
首先停在breakpoint,for那一行,ok。
按一下step over,跑到if,ok。
按一下step over,跑回for,ok。
按一下step over,跑到for外面去了,不直覺。
再按一下step over,回到if,ok。
版本一會跑到for外面去,而版本二不一樣的地方,會跑到右括號},然後跑回for,就ok了。
不過程式語意是一致的,也就是,i最後都是為4。
我以前應該也在別的地方看過這樣的行為,不過因為我幾乎都將for-loop加上括號,所以沒有這樣的困擾。不過壞處是我的code有時候會不必要地太長,orz。
2010/02/06
Xcode debugger的小小反直覺之處
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment