2012-05-09 52 views
1

我正在通過一些代碼閱讀,我碰到以下聲明,它似乎絕對沒有意義。該行編碼如下。它接受一個NSMutableArray的第一個對象,然後發送「count」消息。這到底是什麼?NSMutableArray計數

for (int j = 0; j < [[inputData objectAtIndex:0] count]; j++) 
//inputData is just an NSMutableArray 

請問有人可以向我解釋一下嗎?我從來沒有遇到過這個。起初我認爲它可能就像是一個二維數組場景,其中array [x] .length與array.length不同,但inputData只是一個10個數字的單個NSMutableArray。

+0

您是否收到運行時錯誤?它完全按照您自己的說法進行,將'count'消息發送到'inputData'的第一個元素,並使用返回值作爲迭代的上限。 –

+0

當我第一次編譯並運行它時,它運行良好,但我做了一些微小的修改(它來自一個學校項目),現在這條線給了我一個錯誤,我不知道爲什麼。我只是看不出你如何「計數」一個NSNumber。 – MrHappyAsthma

+0

對,NSNumber's不迴應'count'。所以當這個工作之前,我猜這不是一個NSNumber的數組。 –

回答

2

如果陣列(在這種情況下inpuData)有一個鍵值匹配機制,這個循環將增加它的指數,但由於每次的條件是相同的(的[inputData objectAtIndex:0]計數永遠不會改變),這將導致無限循環

0

如果你是正確的,inputData包含NSNumber S,然後發生的事情是第一次通過,你會得到一個例外,因爲NSNumber並不-count迴應。

如果[inputData objectAtIndex:0]-count作出響應,代碼執行其他任何操作的唯一方法是。它可以是任何響應-count的對象,而不僅僅是一個數組。實際上,如果inputDatanil,它也不會拋出異常。該表達式然後將返回0(發送objectAtIndex:nil返回nil併發送countnil返回0)。