项目相关-野指针调试

野指针是指指向未知或者无效内存地址的指针。出现野指针的场景是实例对象被释放之后,指向对象的指针并没有被置空,还是指向原来的内存地址,这时候访问这个指针就可能会出现野指针错误。野指针错误对应的 Mach Exception 类型 EXCBADACCESS,对应的 Signal 是 SIGSEGV 和 SIGBUS。 在 iOS 开发中内存管理从 MRC 向 ARC 以及编程语言从 ...

项目相关-检测内存泄漏

这篇文章尝试找到检测内存泄漏的方法。 在 iOS 开发中 MRC 向 ARC 过度以及 OC 向 Swift 过度的过程中,野指针问题已经很少出现了,但也还是可能会有相关的野指针的问题,参考Sunny老师的这篇文章,ARC 的机制不光是要保证内存安全,也同时要兼顾性能,所以像上面一些极个别场景 ...

项目相关-提升稳定性

日常开发中我们最关注的一个指标就是 App 的崩溃率,所以「如何提升应用的稳定性」这个话题就显得比较重要。 这篇文章尝试从项目层面以及 Crash 防护层面来聊聊我理解的提升稳定性的方法。 项目层面 功能开关 当项目要增加一个技术相关的模块儿,比如我们开发了一个基于 Runloop 监听卡顿的技术需求,假设测试同事在测试的时候并没有覆盖到所有的测试场景,同时这个技术需求开发的 ...

项目相关-崩溃类型

本文罗列一下目前项目中遇到的崩溃的场景以及对崩溃的理解。 崩溃场景 dispatch_group 非对称调用 Firebase 后台看到的异常信息 BUG IN CLIENT OF LIBDISPATCH: Unbalanced call to dispatchgroupleave() 原因是多调用了一次 dispatchgroupleave(), ...

理解离屏渲染

本文关注如下几个问题 iOS 平台上离屏渲染的概念? 为什么需要离屏渲染? 离屏渲染到底好还是不好?能避免离屏渲染吗?如何优化? 之前聊聊iOS渲染这篇文章里介绍了正常情况下渲染视图的架构方式,如图,那什么是离屏渲染? ...

聊聊 iOS 渲染

本文尝试回答几个问题。 CALayer 是什么 drawRect 和 CALayer 的关系 一个视图是如何渲染到屏幕上的? 视图的基本展示单元 CALayer 我们在 iOS 日常开发用到的最常用的视图控件就是 UIView。大多数开发者也知道 UIView 是对 CALayer 的一次封装,CALayer 属性才是真正的控制展示的部分。对 `UIVie ...

关于 static

本文尝试回答 static 关键字的区别 Objective-C 中 static 修饰的变量存储的位置? OC 全局静态变量和局部静态变量的区别? OC 全局静态变量和全局变量的区别? static 关键字在 OC 和 Swift 中的区别? Swift 中 static 修饰的类属性存储的位置? static 变量和 macho文件的关系? OC 中的 `stati ...

面向中国独立开发者的移动应用备案流程

2023年8月4号国内工信部发了关于展开移动互联网应用程序备案的通知。包括不同平台(iOS/Android)上的移动应用以及各种平台的小程序,都需要进行备案了。**这篇文章介绍的是 iOS 平台上个人开发 ...

购买阿里云域名和服务器

因为App备案的原因,需要购买域名和服务器,这篇文章介绍在阿里云上购买相关服务的流程。 > 注册阿里云的流程比较简单这里不再赘述了。 > 域名购买 在阿里云售卖域名的网站上,找了个和我应用相关的最便宜的域名 [copyboard.online](http://copyboard.online ...