[NSCFArray row]:无法识别的选择器发送到实例0x3953a20

时间:2010-06-17 17:51:44

标签: ios objective-c

我收到此控制台消息的崩溃:

  

由于未捕获的异常而终止应用   'NSInvalidArgumentException',原因:'*** - [NSCFArray row]:   无法识别的选择器发送到实例0x3953a20'

当我滚动一个从一组字典中获取数据的表时会发生这种情况。

2 个答案:

答案 0 :(得分:3)

查看崩溃日志的堆栈跟踪,了解此调用的确切位置。

如果您发送的变量-row实际上并未输入为NSArray,则可能是您未能遵循该变量的内存管理规则。这些相同的症状通常是由此引起的。响应-row的东西可能一度存在,因为你没有得到它而被解除分配,然后NSArray后来被分配到该位置。

运行“构建和分析”,然后重新查看内存管理指南,直到您在睡眠中了解它们为止。

答案 1 :(得分: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