聊聊今年iOS&macOS的升级

日历的升级不错,能在月视图下特别直观的看到某一天的日历事件内容了,之前是某天有事件的话,对应的月视图的日期只展示一个点标识当天是否有事件。对于日历用的比较多的用户来说这个改动非常棒。 macOS 上的 iPhone Mirroring 功能不错,基本上就是把 iPhone 平移到到了 macOS 上去了,特别适合在床上看电脑的时候,手机来了消息,还要起身拿手机这种生活场景,有了这个应用,直接 ...

互联网公司工作模式的一点思考

移动互联网公司的工作层级大概是老板->产品经理->技术->测试 老板(和产品经理)想出一个大概的方向,产品经理将这个想法落地为具体的明确的需求,技术同学拿到需求文档开发,开发完成之后交付给测试同学,测试通过之后上线,没有通过的话就反馈给开发,开发同学继续搞定 BUG,直到达到上线标准。而后续的维护迭代主要也是产品同学基于当前产品的问题以及用户反馈进行改进。 在整个的环节里其实产品经理是 ...

关于工作的一点想法

工作(或者说职场)的本质就是用「劳动换取报酬」。这是最最核心的基石原则,其余的工作的意义,自我价值的实现,都是架在在劳动换取报酬这个原则上的,所以那些都是相对不稳固的。 中国现代社会企业不断的裁员把这一点体会的淋漓尽致,当没办法在这个公司工作的时候,那你在这个公司工作的意义是什么?你追求的所谓的工作意义真的有意义吗?我现在觉得工作的意义是一个结果,而不是一个目标,即当你把要做的工作做 ...

沿着树干前行

现在越来越习惯于通过写文档的方式来进行思考了。 比如修改Bug的时候,一边改bug一边记录改bug的思路,让自己的思路呈现在文档上,这个文档就像是一条通往结果的树干,我们的思路归拢沿着这个树干前行。 任何事情往前发展背后都有逻辑,这就是这个树干存在的原因。 把东西写下来其实就是把逻辑写在纸上,这样我们迷失的时候可以看文档找到我们来时的路,但如果只是在脑子里想的话、很多时候容易忘记事情的发展过 ...

项目相关-野指针调试

野指针是指指向未知或者无效内存地址的指针。出现野指针的场景是实例对象被释放之后,指向对象的指针并没有被置空,还是指向原来的内存地址,这时候访问这个指针就可能会出现野指针错误。野指针错误对应的 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 ...