2

当 ind.row 不是有效值或有时它变为 nil 时,我正在使用以下代码来捕获错误

@try {
        if(ind.row<[[treeNode flattenElements] count])
        {
            [self.mTableView scrollToRowAtIndexPath:ind atScrollPosition:UITableViewScrollPositionTop animated:YES];
        }


    }
    @catch (NSException *e) {
        NSLog(@"%@",e);

    }   

但是当这段代码执行时,有时会发生这个错误

Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1262.60.3/UITableViewSupport.m:1948`

这个错误的原因可能是什么以及为什么没有处理异常

4

3 回答 3

3

iOS 中的断言不会抛出异常,因此您无法捕获它们。

您将需要弄清楚您对-row. 我的第一个猜测是“ind”已经被释放或其他东西。

于 2012-01-16T08:02:15.777 回答
1

您必须自己检查索引,生成并引发异常:NSException Class Reference

+ (void)raise:(NSString *)name format:(NSString *)format, ...
于 2012-01-16T08:07:29.310 回答
1

实际上它已经在捕获异常......我已经在objc异常上设置了标志停止。当我删除它捕获异常时......正如@stilesCrisis所指出的那样,ind值在这个异常时为null。 .sorry for the trble

于 2012-01-16T08:18:22.103 回答