崩溃&警告修复笔记01

1.遍历同时修改数组内容导致崩溃

bugly上bug提醒如下图所示,经检查发现,可能是页面上数据加载惹得祸. 页面加载过程是这样的,首先进入页面,初始化页面,将本地数据加载到array中刷新tableView,同时执行网络请求,构建array完了将数据放在tableView上面. 可能出现问题的地方时, 初始化页面时候,tableView遍历array将数据放在tableView上,遍历期间获取到网络请求的数据,同时开始处理array,然后就导致这个崩溃, bugly提醒此bug出现在ios 10-10.2, 我自己项目崩溃的ios系统版本也在此范围内.

2.DispatchQueue.once的注意事项

最近的项目开发中就犯了一个错误. 某个方法在多个地方都可能会被调用, 这个方法中有一句DispatchQueue.once代码, 代码中需要用到成员变量是可空类型, 于是就出问题了, 首次执行到DispatchQueue.once中代码时, 如果用到的成员变量是nil, 那么会导致初始化失败. 而后续再次给成员变量赋值后, 重新调用这个方法, DispatchQueue.once代码不会被执行, 导致程序出错. 正确的解决方案是, DispatchQueue.once代码中不要使用可选类型!!!

猜你喜欢

转载自www.cnblogs.com/dev-walden/p/9116179.html