很抱歉,您提供的文本内容为空,请问您需要我帮您改写为何种?
- 内容介绍
- 文章标签
- 相关推荐
如何打造一个低Crash率的App?
在移动开发的江湖里没有什么比凌晨三点被报警 理解iOS的异常捕获机制 iOS的异常捕获主要分三层:Mach异常、Unix Signal和OC层异常。Mach异常是内核态的异常,比如非法指令访问。我们需要通过task_set_exception_ports来注册端口监听。Unix Signal是Mach异常没被处理时内核会将其转换成Signal。我们可以通过sigaction来捕获。OC层异常是通过NSSetUncaughtExceptionHandler捕获的, 这是最上层的,比如数组越界抛出的异常。 治理OOM的核心在于“节流” 图片要降采样, 不要无脑缓存,收到内存警告时要果断释放非核心资源。我们可以监控App的物理内存占用,当水位线过高时主动清理缓存,甚至弹窗提示用户重启App。 野指针是所有C/C++/OC开发者的噩梦 对象被释放了指针还在指向的那块内存可能会被分配给了别的对象。当你通过这个指针发消息时后来啊完全不可预测。有时候运气好,什么都没发生;有时候运气不好,直接Crash;最惨的是数据被悄悄篡改了导致逻辑错误,平心而论...。 防御性编程是我们的救命稻草 是个狼人。 同样的逻辑也适用于NSDictionary插入nil键值对,或者NSString的substringWithRange:越界。这种“防御性编程”虽然看起来笨拙,但它能救你一命。
如何打造一个低Crash率的App?
在移动开发的江湖里没有什么比凌晨三点被报警 理解iOS的异常捕获机制 iOS的异常捕获主要分三层:Mach异常、Unix Signal和OC层异常。Mach异常是内核态的异常,比如非法指令访问。我们需要通过task_set_exception_ports来注册端口监听。Unix Signal是Mach异常没被处理时内核会将其转换成Signal。我们可以通过sigaction来捕获。OC层异常是通过NSSetUncaughtExceptionHandler捕获的, 这是最上层的,比如数组越界抛出的异常。 治理OOM的核心在于“节流” 图片要降采样, 不要无脑缓存,收到内存警告时要果断释放非核心资源。我们可以监控App的物理内存占用,当水位线过高时主动清理缓存,甚至弹窗提示用户重启App。 野指针是所有C/C++/OC开发者的噩梦 对象被释放了指针还在指向的那块内存可能会被分配给了别的对象。当你通过这个指针发消息时后来啊完全不可预测。有时候运气好,什么都没发生;有时候运气不好,直接Crash;最惨的是数据被悄悄篡改了导致逻辑错误,平心而论...。 防御性编程是我们的救命稻草 是个狼人。 同样的逻辑也适用于NSDictionary插入nil键值对,或者NSString的substringWithRange:越界。这种“防御性编程”虽然看起来笨拙,但它能救你一命。

