Error Note1:错误修复笔记
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代码中不要使用可选类型!!!
3.处理webView中alert不当导致崩溃
事情是这样的, 在App的菜单栏其中有一栏内容是一个h5网页(地图页,地图获取定位失败网页会alert提醒). 我在runJavaScriptAlertPanelWithMessage
方法中接收alert弹窗并使用系统的UIAlertController
弹窗提醒用户, 用户点击确定或取消时候执行completionHandler
闭包, 弹出UIAlertController代码是这样的self.present(alertController, animated: true, completion: nil)
, 问题就出在这行代码, 当用户点击此菜单选项, 尚未弹出alert之前, 用户切换了菜单选项, 那么就会导致self
不在window层级中, 程序崩溃! 解决方案: 查找当前应用最顶层的一个控制器来弹窗提醒.
4.网络请求错误码汇总
线上环境的软件报错code=4. 最终查到对应错误为public var kCFStreamErrorSOCKS5SubDomainMethod: Int { get } /* Error code is the server's desired negotiation method*/
, 但是最终还是不晓得到底是什么错误. 查找错误码对应错误过程中也废了不少的周折,这里统一纪录一下错误码对应的错误信息吧!
目前我了解到的错误码有三种类型CFNetworkErrors
, CFSocketError
和kCFStreamError*
开头对应的错误码.
查找错误码的方法: 使用对应的错误码初始化enum类型, 获取变量类型.
5.NSObjectSafe解决OCSelector等崩溃问题
使用这个仓库可以拦截大部分的数组越界, 找不到方法等的oc崩溃问题;
https://github.com/jasenhuang/NSObjectSafe
Error Note1:错误修复笔记的更多相关文章
- XCODE 出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复
XCODE 出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复 XCODE 出现 The opera ...
- 网络错误修复工具:Network Fault Repair Tool Build20160414
::请勿轻易修改此文件,以避免不可预知的错误 gwsbhqt@163.com @echo off color 0A setlocal enabledelayedexpansion title Netw ...
- 解决ngnix服务器上的Discuz!x2.5 Upload Error:413错误
1.修改php.ini sudo nano /etc/php5/fpm/php.ini #打开php.ini找到并修改以下的参数,目的是修改上传限制 max_execution_time = 900 ...
- ArcGIS10.1 api for Flex开发用于ArcGIS 9.3时QueryTask 'Error #2032'错误的解决方案
因客户GIS软件需求,将应用降级到低版本ArcGIS9.3,不仅数据有些样式.配色.字符有些问题,API也要相应“降级”,解决如下: 利用9.3+flex做QueryTask时候出现了[RPC Fau ...
- AjaxControlToolkit MaskedEdit Unspecified error 未指定错误
使用AjaxControlToolkit 里面的 MaskedEditValidator控件,IE里面在如下的js中出现未指定(Unspecified error)错误, if (document.a ...
- Delphi 通信报Asynchronous socket error 10053错误的一个解决方法
在使用Delphi中的TClientSocket和TServerSocket进行通信编程时,当使用TClientSocket这方的客户端使用TClientSocket.close断开连接并退出程序时, ...
- Installation error INSTALL_FAILED_VERSION_DOWNGRADE错误
最近折腾了一下Robotium自动化测试框架,发现问题还挺多,刚刚解决了一个问题,总算是把环境搞定了,可是一运行测试用例,发现又报Installation error INSTALL_FAILED_V ...
- 解决SQL Server管理器无法连接远程数据库Error: 1326错误
解决SQL Server管理器无法连接远程数据库Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例 ...
- MySQL ERROR 1045错误解决办法
今天在安装MySQL数据库时,有安装过程中报ERROR 1045错误,网上查了一下,解决方法如下: 1.对于安装过程中该错选择"skip"继续向下安装,完成安装: 2.在MySQL ...
随机推荐
- Grunt usemin前端自动化打包流程
前端优化是尽量减少http请求,所以我们需要尽量合并压缩文件,然后调用压缩后的文件,比如多个css文件压缩成一个,多个js文件合并压缩等,usemin能够自动在html中使用压缩后的文件,达到上面的目 ...
- javascript实现SHA1算法
web里面密码直接传到后台是不安全的,有时候需要进行加密,找到一个不错的javascript SHA1算法: <!DOCTYPE html> <html lang="en& ...
- 关于 class 的命名
class名称中只出现小写字符和破折号 使用有组织或目的明确的名称,不使用表现形式 基于最近的的父class 作为新class的前缀 使用 .js-* 来标识行为,并且不要将这些class包含到css ...
- Android Button事件处理
一般只需要处理按钮的点击事件就可以,但想让一个按钮处理多个事件,就得同时监听多个方法. OnClickListener 点击事件 OnLongClickListener 长按事件 OnTouchLi ...
- 【Udacity】朴素贝叶斯
机器学习就像酿制葡萄酒--好的葡萄(数据)+好的酿酒方法(机器学习算法) 监督分类 supervised classification Features -->Labels 保留10%的数据作为 ...
- GIT团队合作探讨之一-保持工作同步的概念和实践
感谢英文原文作者,这是我看到的关于git协同工作写的最清晰简洁的文章了: https://www.atlassian.com/git/tutorials/syncing/git-push SVN使用一 ...
- C# FTP操作类(获取文件和文件夹列表)
一.如何获取某一目录下的文件和文件夹列表. 由于FtpWebRequest类只提供了WebRequestMethods.Ftp.ListDirectory方式和WebRequestMethods.Ft ...
- .NET预处理器指令
.NET预处理器指令 做开发以来很少接触到这部分内容,基本上没有用到,偶尔在一些框架中和一些开源项目中会见到,常常因为只关心实现逻辑忽略了这部分的功能.现在自己有点时间了,还是希望能够完整的对这部分做 ...
- win+ R下的常见命令
-------------------------电脑运行常见命令----------------------------- Windows+R输入cmd 运行net start mssqlserve ...
- Linux:301重定向 —— 将不带www的重定向到带www的
仓鼠又要手把手教啦 1.先看看自己有没有解析域名(带www和不带www的是两种域名形式!!) 位置:阿里云->域名->解析 2.进入解析,带www的说明你已经解析了www.ljjpm.co ...