iOS开发异常处理教程
以下是两篇xcode开发如何处理异常的教程,建议一读
梗概如下:
基本上你能碰到两种崩溃的情况:SIGABRT (也叫EXC_CRASH),和EXC_BAD_ACCESS (也可能叫SIGBUS或SIGSEGV)。
SIGABRT是程序异常,容易定位,EXC_BAD_ACCESS通常直接就把断点断在了main处,有一定的技巧来寻找原因(比如启用Zombie Objects)。
文章介绍了如何读控制台的错误日志,介绍了异常断点(Exception Breakpoint)、LLDB(GDB)、僵尸对象(Zombie Objects)等。
即便没耐心看完全文,文后也有一个简短的总结:
- 如果程序崩溃在main.m,可以考虑设置一个异常断点
- 如果仍然没有得到有用的信息,可以在LLDB键入
po $eax命令(扩展:po [$eax class],po [$eax name],po [$eax reason]),等于于po [$eax description] - 如果得到
EXC_BAD_ACCESS错误,可以启用Zombie Objects再测试一遍,检查是否引用到了已被释放的对象 - 很多情况下异常由遗漏的或错误的代码与设计器(story或xib)的连接,这些异常通常不会在编译期发现而且不容易被检查代码时人眼发现
- 尽量把警告当错误,很多情况下错误也来自于编译期的“警告”。如果你不明白警告是怎么发生的,就尽量研究清楚
- 模拟器环境与真机是不同的,尽量连不同的真机debug
iOS开发异常处理教程的更多相关文章
- iOS开发入门教程
iOS开发入门教程 http://my.oschina.net/mailzwj/blog/133273 摘要 iOS开发入门教程,从创建项目到运行项目,包括OC基础,调试,模拟器设置等相关知识. iO ...
- Apple官方IOS开发入门教程[v0.2]
今天,又跑去找IOS开发入门教程了,结果发现没什么好的PDF. 后来发现,原来苹果官方有开发入门教程,而且写的很好.所以整理出来了,给大家分享一下. 我就不在这里贴pdf的内容了,下面有苹果官方教程的 ...
- IOS开发入门教程-总结篇-写给狂热的编程爱好者们
程序发轻狂,代码阑珊,苹果开发安卓狂!--写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一 ...
- iOS开发——Metal教程
Metal Swift教程 学习使用苹果GPU加速3D绘图的新API:Metal! 在iOS 8里,苹果发布了一个新的接口叫做Metal,它是一个支持GPU加速3D绘图的API. Meta ...
- iOS开发--绘图教程
本文是<Programming iOS5>中Drawing一章的翻译,考虑到主题完整性,翻译版本中加入了一些书中未涉及到的内容.希望本文能够对你有所帮助. 本文由海水的味道翻译整理,转载请 ...
- IOS开发新手教程(一)-数据类型和运算符
OC语法入门(一) 数据类型和运算符 1.1凝视 凝视和其它语言一样,同意单行 ,多行凝视,一份规范的代码里面须要有一些正式的凝视,例如以下凝视: /* 这是多行 凝视 */ //这是多行凝视 OC语 ...
- ArcGIS Runtime SDK for iOS开发系列教程(5)——要素信息的绘制
在客户端绘制点.线.面要素是GIS应用的基本功能,这一讲我将向大家介绍在iOS中如何来实现这一功能.大家都知道在Flex.Silverlight.js中对于要素的绘制都有一个叫GraphicsLaye ...
- 新手必看,史上最全的iOS开发教程集锦,没有之一!
最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
随机推荐
- C#学习笔记(26)——委托计算器
说明(2017-11-20 15:14:18): 1. 委托一直稀里糊涂的,有人说简单,有人说难,艹你们! 2. 其实主要是因为,平时不用委托也能解决大部分问题,所以都没有特意去用,网上也没有什么很好 ...
- Unity3D-RPG项目实战(4):角色性能測试
前言 用一个新的引擎.还是要沉下心来学习.记得2007年用Unreal Engine 3做项目的时候.就有过慘痛的教训:前面话了个把月的时间学习Unreal.认为摸门了.于是就着急忙慌的进入项目正式开 ...
- mysql hive sql 进阶
场景: 说明.1.上面的数据是经过规整的数据,step是连续的,这个可以通过row_number实现.连续是必要的一个条件因为在计算第二个查询条件时依赖这个顺序,如果step不是数字字段可以截取然后转 ...
- 【WPF】使用控件MediaElement播放视频
需求是点击按钮后,弹出弹窗播放视频.按钮的点击事件如下. public void ShowVideo() { Window window = new Window(); window.Width = ...
- 【转载】TCP协议要点和难点全解
说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面 2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的 3).针对对象:对TCP已经有了全面了解的 ...
- gdb基本命令(非常详细)
gdb基本命令 本文介绍使用gdb调试程序的常用命令. 主要内容: [简介] [举例] [其他] [简介] ============= GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具. ...
- 标签<view>文字自动换行
<view style='word-break:break-all;'>{{con.blog}}</view>
- 自然语言交流系统 phxnet团队 创新实训 项目博客 (七)
在本项目中使用到的“语音转文本”的技术总结: 语音转文本部分是调用的科大讯飞的在线语音,它的激发方式是按键,通过按钮触发开启安卓设备的录音,此部分需要在源码中写入关于安卓权限的要求,来调用安卓的录音权 ...
- JAXB解析xml
废话不多说,直接上代码 核心类: package com.jaxb; import java.io.File; import java.io.FileInputStream; import java. ...
- WPF实现双击事件MouseDoubleClick
本实例是基于Canvas增加双击事件 public class RevitCanvas : Canvas { public RevitCanvas() { _oncetime = long.MaxVa ...