iOS常见崩溃情况以及bug调试解决方法

本博客会不定期更新,将我在项目中常见的崩溃情况进行整理后分享给大家:

1.unrecognized seletor。错误:这种情况很简单,给一个对象发送了一条它不认识的消息。比如说你的.h中声明了某一个方法,但是.m中却没有实现,而且你没有对异常消息处理(消息转发)就会造成这种现象。解决办法:首先排查自己的某一些方法是否实现,其次看一下哪些对象接收了它不该接收的消息。

2.index 1 beyond NSArraMu [0,0]数组越界:数组越界这个不多说。

3.NSNul length 这个异常以可以归类为第一种,也是给某一个对象发送了不识别的消息。常见原因有:给UILabel对象设置了text,此时的text内容为空字符串null,然后你在取text的length的时候就会抛出异常。

4.EXC_BAD_ACCESS异常:这种大多数是对象提前释放,访问了野指针的错误。解决办法:排查所有声明为weak对象的使用,是否在没有持有的情况下再次访问了该对象(该对象已经被释放),第二在MRC情况下,排查一下所以已经release的对象(声明一点,MRC中全局变量最好在dealloc方法中进行释放),第三排查一下所有block,是否block被正常赋值等。

5.崩溃在main函数。这种情况最苦逼也是最难找到bug所在,这种情况下,用@try @catch将main函数包裹起来,这样会抛出异常堆栈信息等,或者通过添加全局breakPoint来追踪bug。

欢迎加入iOS技术交流群 :爱疯、爱Coding 群号:209476515

时间: 2024-10-12 18:14:25

iOS常见崩溃情况以及bug调试解决方法的相关文章

angularjs ios title不能修改的bug的解决方法

在app.js加入下面这句代码 就可以解决. function ($rootScope, $state, $stateParams, $log, httpService, apiUrl, cookieUtil, $location) { var $body = $('body'); document.title = toState.data.pageTitle; var $iframe = $('<iframe src="/favicon.ico"></iframe&

如何使用mysql(lamp)分离环境搭建dedecms织梦网站及apache服务器常见的403http状态码及其解决方法

一.实验环境 centos6.5+mysql5.5.32+php5.3.27 软件:DedeCMS-V5.7-GBK-SP1 本实验是使用lamp环境搭建,但mysql数据库与之分离,本实验成功的关键在于防火墙及其selinux关闭的前提下实现. 二.实验步骤 1)下载产品,并解压至www目录内 wget -O /home/chen/tools/  http://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7-GBK-SP1.tar.gz

iOS开发-No matching provisioning profiles found解决方法

今天真机调试的时候莫名其妙遇到了这样的一个问题: This product type must be built using a provisioning profile, however no provisioning profile matching both the identity "iPhone Developer" and the bundle identifier..... 具体如下图所示: 十分蛋疼, 发现不管是从网上下的demo, 还是自己的过程.凡事真机测试的时候都

WebLogic12.1.1中跨域问题的探讨以及几种常见中间件中跨域问题的解决方法

1.问题描述 扬州现场中最开始安装了中间件WebLogic12.1.1版本,按照公司之前解决WebLogic12的方法,我们在中间件中发布了一个虚拟路径为/,根目目录文件为root的服务. 这个root文件中包含的文件如下: 在程序启动发起跨域访问时,出现了下面这个问题: 如图可见,我们虽然可以访问到crossdomain.xml,并且能得到里面的完整内容,可是程序无法走下去,后面Flash端的跨域访问无法被触发. 2.解决思路 2.1是否是crossdomain.xml内容不对 不同的Flas

浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法

自从Android3.0引入了Fragment之后,使用Activity去嵌套一些Fragment的做法也变得更加流行,这确实是Fragment带来的一些优点,比如说:Fragment可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI,更重要的是Fragment解决了Activity间的切换不流畅,实现了一种轻量及的切换,但是在官方提供的android.support.v4包中,Fragment还是或多或少的存在一些BUG,今天就与大家分享一下这些BUG和解决方

写出几种IE6 BUG的解决方法

1.双边距BUG float引起的  使用display:inline 2.3像素问题 使用多个float和注释引起的 使用dislpay:inline -3px 3.超链接hover 点击后失效  使用正确的书写顺序 link visited hover active 4.Ie z-index问题 给父级添加position:relative 5.Png 透明 使用js代码 改 6.Min-height 最小高度 !Important 解决’ 7.select 在ie6下遮盖 使用iframe

IE6常见的bug及解决方法

1.IE6怪异解析之padding与border算入宽高 原因:未加文档声明造成非盒模型解析 解决方法:加入文档声明<!doctype html> 2.IE6在块元素.左右浮动.设定marin时造成margin双倍(双边距) 解决方法:display:inline 3.以下三种其实是同一种bug,其实也不算是个bug,举个例子:父标签高度20,子标签11,垂直居中,20-11=9,9要分给文字的上面与下面,怎么分?IE6就会与其它的不同,所以,尽量避免. 1)字体大小为奇数之边框高度少1px

10个常见的IE bug和解决方法

1.IE6 幽灵文本(Ghost Text bug) 在我写本文之前,我遇到了这个bug.它相当的古怪和滑稽.一块不知哪来的重复的文本,被IE6显示在靠近原文本的下面.(译注:也可以参看 Explorer 6 Duplicate Characters Bug 获得bug演示).我无法解决它,所以我搜索它,果然,这是另一个IE6的bug. 对此有许多解决方法,但是没有一个对我的例子有效(因为网站的复杂性我无法使用其中的一些方法).所以我使用了hack.在原文本之后增加空格看起来能解决这个问题. 但

常见的浏览器兼容问题和解决方法

为什么会有兼容问题? 由于市场上浏览器种类众多,而不同浏览器其内核亦不尽相同,所以各个浏览器对网页的解析就有一定出入,这也是导致浏览器兼容问题出现的主要原因,我们的网页需要在主流浏览器上正常运行,就需要做好浏览器兼容. 使用Trident内核的浏览器:IE.Maxthon.TT: 使用Gecko内核的浏览器:Netcape6及以上版本.FireFox: 使用Presto内核的浏览器:Opera7及以上版本: 使用Webkit内核的浏览器:Safari.Chrome. 而我现在所说的兼容性问题,主