2011-03-28 145 views
1

我有一個for循環狀態換貨如下:在聲明中對循環

for(NSString* name in nameArray) 

nameArray是NSArray的。

在上面的說法,這是什麼意思爲:* NSString的名字nameArray

回答

3

迭代通過所有的NSString *在nameArray。 可以少寫乾淨:

for (int i=0;i<[nameArray count];++i) { 
    NSString *name = [nameArray objectAtIndex:i]; 
    // Do stuff 
} 

請記住:不要重複一個可變的數組和變異它(並確保沒有其他線程執行)。在這種情況下,您需要每次迭代調用count,如上所示。

+1

儘管結果通常是相同的,但這些代碼並不是「in」語法代碼編譯的內容。正如@taskinoor所提到的那樣,'in'語法是Objective-C 2.0的快速枚舉,它更復雜,速度更快。它也有一個突變守衛,這樣如果你改變迭代的集合,就會引發異常,這會更安全。 – 2011-03-28 20:37:18

0

這意味着將爲nameArray中的每個對象執行括號內的代碼,您將通過NSString *name變量訪問該對象。

1

這是在Objective-C 2.0中引入的快速枚舉語法。有關詳細信息,請參閱this教程。你也可以通過谷歌的「客觀c快速枚舉」獲得許多其他在線資源。