Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当用UITableView调用endUpdates时,endUpdates在EXC_BAD_ACCESS 9上崩溃

当用UITableView调用endUpdates时,endUpdates在EXC_BAD_ACCESS 9上崩溃
EN

Stack Overflow用户
提问于 2015-12-23 12:26:07
回答 3查看 5K关注 0票数 6

在用户升级到iOS 9之后,我们注意到了一系列坏访问(EXC_BAD_ACCESS)崩溃,这些崩溃不会出现在仍然在iOS 8上的用户身上,当我们在UITableView上调用endUpdates时就会发生这种情况。

崩溃日志包括以下原因:

在当前参数寄存器中找到的选择器名称: numberOfRowsInSection: 在当前参数寄存器中找到的选择器名称: indexPathForRowAtGlobalRow:

堆栈跟踪#1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1   UIKit   __46-[UITableView _updateWithItems:updateSupport:]_block_invoke + 92
2   UIKit   __46-[UITableView _updateWithItems:updateSupport:]_block_invoke1007 + 224
3   UIKit   -[UITableView _updateWithItems:updateSupport:] + 2556
4   UIKit   -[UITableView _endCellAnimationsWithContext:] + 12892
[...]

堆栈跟踪#2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1   UIKit   __46-[UITableView _updateWithItems:updateSupport:]_block_invoke + 100
2   UIKit   -[UITableViewRowData globalRowForRowAtIndexPath:] + 102
3   UIKit   __46-[UITableView _updateWithItems:updateSupport:]_block_invoke1007 + 182
4   UIKit   -[UITableView _updateWithItems:updateSupport:] + 2300
5   UIKit   -[UITableView _endCellAnimationsWithContext:] + 10552

我们能够复制这个问题,但不知道如何解决这个问题。

EN

回答 3

Stack Overflow用户

发布于 2015-12-23 13:53:45

当您的iOS9中没有导致endUpdates与EXC_BAD_ACCESS崩溃的行时,似乎在EXC_BAD_ACCESS中出现了一个bug。要解决这个问题,您必须在调用tableView reloadData之前调用beginUpdates。

克劳迪奥·雷迪指向我的线程:)在第1节插入中,在调用[tableView beginUpdates];之前,我已经实现了以下解决方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if ([[NSProcessInfo processInfo] operatingSystemVersion].majorVersion >= 9)
{
    // there's a bug in iOS9 when your UITableView has no rows that causes endUpdates to crash with EXC_BAD_ACCESS
    // to work around this bug, you have to call tableView reloadData before calling beginUpdates.

    BOOL shouldReloadData = YES;
    NSInteger numberOfSections = [tableView.dataSource numberOfSectionsInTableView:tableView];
    for (NSInteger section = 0; section < numberOfSections; section++)
    {
        if ([tableView.dataSource tableView:tableView numberOfRowsInSection:section] > 0)
        {
            // found a row in current section, do not need to reload data
            shouldReloadData = NO;
            break;
        }
    }

    if (shouldReloadData) 
    {
        [tableView reloadData];
    }
}
票数 8
EN

Stack Overflow用户

发布于 2019-03-28 10:05:33

我也面临着这个问题,上面在表视图上调用reloadData()的答案确实解决了这个问题,但是这并不理想,因为由于重新加载,与更新相关的动画并不流畅。

问题的根源在于,在调用方法时,我在表视图上以编程方式调用了selectRow(at indexPath: IndexPath?, animated: Bool, scrollPosition: UITableView.ScrollPosition),这是一个无效的索引路径。(表视图中的更新用于展开/折叠一个区段,以显示行在或零行内,有时我会在折叠部分中选择一行)。这种行为在为表视图中不可见的索引路径选择行时不会造成崩溃,但是当在beginUpdates(之间更新endUpdates()调用和在选择无效的索引路径之后更新endUpdates()调用时,在endUpdates()调用时会出现EXC_BAD_ACCESS崩溃。在调用selectRowAt:之前添加一个检查,以确保索引路径是可见的/有效的,然后以编程方式选择解决了崩溃,而不需要调用reloadData()

票数 2
EN

Stack Overflow用户

发布于 2019-03-29 09:57:34

在尝试执行beginUpdates()和endUpdates()调用之间的多个插入、删除或重新加载操作时,我遇到了此错误,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tableView.beginUpdates()
tableView.deleteRows(at: [deletePaths], with: .fade)
tableView.insertRows(at: [insertPaths], with: .fade)
tableView.endUpdates()

我通过打电话解决了这个问题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
performBatchUpdates(_ updates: (() -> Void)?, completion: ((Bool) -> Void)? = nil)

而不是使用开始和结束调用,例如。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
self.tableView.performBatchUpdates({
    self.tableView.deleteRows(at: [deletePaths], with: .fade)
    self.tableView.insertRows(at: [insertPaths], with: .fade)
}, completion: nil)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34443185

复制
相关文章
dataframe行变换为列
使用 import org.apache.spark.sql.functions 里面的函数,具体的方式可以看 functions :
机器学习和大数据挖掘
2019/07/01
1.1K0
将List<Map>中的datas转换为json格式写入文件
private static boolean writeToTextFileByJson(List<Map<String, Object>> datas, String title, String columns, String fileName, String encode) { final BufferedWriter bw; boolean flag = true; try { boolean hasExists = new File(fileName).exists();
用户3003813
2018/09/06
6.6K0
在Python如何将 JSON 转换为 Pandas DataFrame?
在数据处理和分析中,JSON是一种常见的数据格式,而Pandas DataFrame是Python中广泛使用的数据结构。将JSON数据转换为Pandas DataFrame可以方便地进行数据分析和处理。在本文中,我们将探讨如何将JSON转换为Pandas DataFrame,并介绍相关的步骤和案例。
网络技术联盟站
2023/08/03
1.3K0
在Python如何将 JSON 转换为 Pandas DataFrame?
PHP将PDO读取的数据转JSON格式输出
数据库结构及内容如下: PHP处理 <?php // 链接数据库 require_once('conn.php'); // 头部声明为json header("Content-type:applic
岳泽以
2023/04/23
2.6K0
PHP将PDO读取的数据转JSON格式输出
将VOC格式的数据集转换为COCO格式
import xml.etree.ElementTree as ETimport osimport json coco = dict()coco['images'] = []coco['type'] = 'instances'coco['annotations'] = []coco['categories'] = [] category_set = dict()image_set = set() category_item_id = -1image_id = 20180000000annotation_id
狼啸风云
2021/06/09
3.2K0
使用Python的yaml模块将JSON转换为YAML格式
之前介绍过读取yaml文件输出json,今天介绍下使用Python的yaml模块将JSON转换为YAML格式。
怪盗LYL
2023/09/15
1.2K0
使用Python的yaml模块将JSON转换为YAML格式
python提取pdf文档中的表格数据、svg格式转换为pdf
https://www.analyticsvidhya.com/blog/2020/08/how-to-extract-tabular-data-from-pdf-document-using-camelot-in-python/
用户7010445
2020/08/28
1.2K0
将Excel文件转换为JSON格式时保留原始数据类型
为了在将Excel文件转换为JSON格式时保留原始数据类型,您可以使用Python库,例如pandas和json。
jackcode
2023/04/25
2.7K0
将Excel文件转换为JSON格式时保留原始数据类型
图数据转换为DataFrame
•一、DataFrame•二、指定字段转换为DataFrame •2.1 CYPHER语句 •2.2 Python转换代码•三、将一个图转换为DataFrame •3.1 CYPHER语句 •3.2 Python转换代码
马超的博客
2022/09/02
9850
图数据转换为DataFrame
jackson将json转换为json对象
高久峰
2023/07/02
3390
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7K0
xml转格式_sql怎么导入表格数据
sheet 的概念是:1个excel中有多个页面每个页面都是一个sheet,在左下角显示。
全栈程序员站长
2022/09/23
9370
Js 数组转JSON格式
要点2:在js里写数组的时候是var data = new Array() 但是你如果是要转json显示的时候就要写成 var data = {},不然转出来的json全是空的。
全栈程序员站长
2022/06/24
12K0
Js 数组转JSON格式
日期型转JSON格式
可在属性上增加 @JsonFormat(timezone="GMT+8",pattern="yyyy-MM-dd"或 @JsonFormat(shape=JsonFormat.Shape.NUMBER) 全局修改可以在application.yml spring: jackson: date-format: yyyy-MM-dd #如果使用字符串型表示,用这样设置格式 timezone: GMT+8 serialization: write-dates-as-tim
华创信息技术
2019/11/08
1.7K0
java XML转JSON格式
代码如下所示,从这个例子中发现了代码库的重要性,如果建立一个自己的代码库,就可以直接从自己的代码库中取出来,这样需要什么就可以随时的取出来.代码库要保证的是规范性和正确性,并且有简单的模块注释.
全栈程序员站长
2022/09/16
1.3K0
python中将xml格式转json格式
在用python写脚本时,通常需要处理xml格式的文件或字符串。由于json格式处理的方便性,
py3study
2020/01/03
4.9K0
【Python】json 格式转换 ① ( json 模块使用 | 列表转 json | json 转列表 | 字典转 json | json 转字典 )
然后 , 准备 python 数据 , 将数据放到 list 列表中 , 列表中的元素是 dict 字典 ;
韩曙亮
2023/10/11
6610
【Python】json 格式转换 ① ( json 模块使用 | 列表转 json | json 转列表 | 字典转 json | json 转字典 )
python将webp格式的图片转换为png格式
#!/usr/bin/env python # -*- coding:utf-8 -*- import os import time from multiprocessing.dummy import Pool from PIL import Image # tinypng 批量将文件夹下的webp文件转换为png格式 def convert(pic): pic_list = pic.split('.') name = pic_list[0] # print(name)
槽痞
2020/06/23
2.4K0
java将字符串转换为json对象的方法_java jsonobject转string
在与服务器交互的时候,我们往往会使用json字符串,今天的例子是java对象转化为字符串,
全栈程序员站长
2022/11/08
21.2K0
点击加载更多

相似问题

如何让tornado TCPClient使用代理(http或socks)?

10

HTTP调用与Socks代理

14

RestSharp代理http/https/socks信息

1196

如何通过http代理发出Socks请求?

14

如何使用php测试代理或socks

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文