我有一個for循環狀態換貨如下:在聲明中對循環
for(NSString* name in nameArray)
nameArray是NSArray的。
在上面的說法,這是什麼意思爲:* NSString的名字nameArray
我有一個for循環狀態換貨如下:在聲明中對循環
for(NSString* name in nameArray)
nameArray是NSArray的。
在上面的說法,這是什麼意思爲:* NSString的名字nameArray
迭代通過所有的NSString *在nameArray。 可以少寫乾淨:
for (int i=0;i<[nameArray count];++i) {
NSString *name = [nameArray objectAtIndex:i];
// Do stuff
}
請記住:不要重複一個可變的數組和變異它(並確保沒有其他線程執行)。在這種情況下,您需要每次迭代調用count
,如上所示。
這意味着將爲nameArray
中的每個對象執行括號內的代碼,您將通過NSString *name
變量訪問該對象。
這是在Objective-C 2.0中引入的快速枚舉語法。有關詳細信息,請參閱this教程。你也可以通過谷歌的「客觀c快速枚舉」獲得許多其他在線資源。
儘管結果通常是相同的,但這些代碼並不是「in」語法代碼編譯的內容。正如@taskinoor所提到的那樣,'in'語法是Objective-C 2.0的快速枚舉,它更復雜,速度更快。它也有一個突變守衛,這樣如果你改變迭代的集合,就會引發異常,這會更安全。 – 2011-03-28 20:37:18