2010-06-17 51 views
1

我得到這個控制檯消息崩潰:[NSCFArray行]:無法識別的選擇發送到實例0x3953a20

終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,理由是:「*** - [NSCFArray行]: 無法識別的選擇發送到實例0x3953a20'

這發生在我滾動槽,從字典的陣列獲取數據的表。

+0

我們可以看到一些代碼嗎?看起來像你試圖讓'NSIndexPath'的行索引傳遞給'-cellForRowAtIndexPath:'。 – 2010-06-17 18:01:08

回答

3

查看崩潰日誌的堆棧跟蹤以查看確切發生此調用的位置。

如果您要發送的變量-row未實際輸入爲NSArray,則可能是因爲未遵循該變量的內存管理規則。這些相同的症狀通常是由此引起的。響應-row的東西可能曾經存在過,因爲你沒有 - 保留它而被解除分配,然後NSArray被分配到那個地方。

運行「Build &分析」,並重新審查內存管理指南,直到您在睡夢中知道它們。

+0

問題是,名爲'行'的變量在某種程度上被解除分配。 – 2010-06-24 10:55:34

0

看起來你發送一個row消息到NSArray。在NSArray類中沒有定義行方法。如果您正在使用一個表,我的猜測是,你想送「行」到indexPath參數來獲取位置,然後讓您的數據陣列在該位置的數據:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // first row will be like 0 
    NSUInteger row = [indexPath row]; 
    // get the same row position in your data array 
    id data = [YOUR_DATA_ARRAY objectAtIndex:row]; 
} 

這會給你的該行的數字位置。一個警告:「行」不是基礎NSIndexPath類的一部分。這是added as a category in UIKit

相關問題