

从响应链收集手动埋点
背景手动埋点一直以来都是一个比较麻烦的行为,埋点不属于业务逻辑,而我们必须插入业务逻辑中,有可能就导致了我们不得不修改设计以满足埋点的需求。 同时数据方很多时候会要求带上额外的数据,而这些额外的数据甚至和当前模块毫无关系,也就是破坏了我们的独立性和解耦原则。比如在事件点击中加入当前页面的pageId,当前cell的index等等。
更多

流程状态机架构
背景在现实的项目过程中,由于人员的更替,以及业务的发展,总是会导致一个问题,那就是流程细节的丢失,项目时间越久,这个问题越是严重。所以往往会出现产品在不知道这个功能的流程的情况下设计方案,开发在开发过程中才发现流程上的设计缺陷,这不仅仅导致了项目时间的推迟,更可能导致整个业务流程上出现漏洞而危害整个产品,如果是云音乐这种类型产生问题可能表现不大,但像考拉这种涉及到钱的项目严重的可能导致信任危机。
更多

Corountines 看似美好却危险重重
协程Coroutines这个概念在5、6年前就已经比较热门了,而且也涌现了一波以该目标的第三方库,但是这个概念并没有被广泛的应用,这里来看看Coroutines给我们带来的便利和危险吧。
更多C++虚函数表一探
虽然iOS中对C++的要求并不是必须的,但是很多基础都是用C++写的。我们都说C++难学,除了众多的特性以及为了兼容底层语言的一些妥协,导致特性极其复杂,虽然经过C++11之后的标准,已经更加完善和易用了,但我们还是需要去了解一些C++的实现原理及特性,才能避免掉入坑中。
更多

CPU分支预测
CPU在我们不知道的情况下做了很多的优化,下面我们就来看看。
更多Objc类型推断
Objc是一门非常啰嗦的语言,而且历史悠久,背靠C语言,发展缓慢。自从苹果有了新宠swift,更是对他不管不顾了,所以有很多现代语言拥有的优秀特性,Objc都无法享受到。其中一项就是类型推断。
更多

roadmap之objc
objc是iOS的首要开发语言,在很多厂还是以objc为主,所以我们需要对objc更深入的了解,这里主要分为3个难点进行总结,runtime,runloop和block。
更多iOS-roadmap之前言
在经历了这么多年的iOS开发,当初一个什么也不懂的大学生,也通过自身的努力,慢慢的有了一些心得和体会,所以这里准备将自己这么多年在iOS方面的经验进行一个总结。
更多程序在执行main方法之前都在做什么
我们很少关注应用启动前,系统会给我们做些什么事情,可能知道+ load和constructor会在main方法之前执行。那么这次我们来看看main方法之前都做了哪些事情。
更多

函数式编程思想简介
在平时的iOS开发中,我们大部分还是依靠着最早的MVC的思想开发着,最多也是进行了部分变种,比如MVP,MVVM,这些都是完全的面向对象的思想,在处理一些简单的场景的时候还是非常有效的,但是在某些场合,我们总会觉得难以解耦,难以进行模块化拆分,这是由于目前大部分架构中,在业务逻辑部分依然是过程性的,整个过程中还是需要依赖大量的其他模块,这次我们来看看函数式编程的思想,以另一种角度来看问题是否能够去解决部分问题。
更多