美文网首页
libc++abi.dylib: terminate_handl

libc++abi.dylib: terminate_handl

作者: guaker | 来源:发表于2015-10-22 20:31 被阅读5466次

    最近做长按消息气泡弹出menuController删除消息cell功能遇到个错误,libc++abi.dylib: terminate_handler unexpectedly threw an exception,这个异常没有打印日志,也无法定位到具体问题。网络找到这段代码打印出异常:

    @try {
        //问题代码
        [self.dataArray removeObjectAtIndex:1];
        [self.tableView beginUpdates];
        [self.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:1 inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
        [self.tableView endUpdates];
    }
    
    @catch (NSException *exception) {
        NSLog(@"exception = %@", exception);
    }
    
    @finally {
    
    }
    

    输出结果:

    exception = Attempt to delete row containing first responder that refused to resign
    

    看到这句话大概知道原因了,弹出menuController需要设置becomeFirstResponder成为第一响应者,删除cell之前则需要resignFirstResponder

    删除cell之前加上这段代码就好使了:

    MessageCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]];
    [cell.messageView resignFirstResponder];

    相关文章

      网友评论

          本文标题:libc++abi.dylib: terminate_handl

          本文链接:https://www.haomeiwen.com/subject/cgrafttx.html