Domino - 基于事件链的多层级对象通讯机制的实践

背景

当我们实现复杂UI的时候,很容易形成一种多层级的对象关系,如下图

随着ContentViewController业务的增长,ContentViewController/ContainerViewController/RootViewController的delegate会变得越来越大。很多时候,ContainerViewController/RootViewController可能并不关心其中的方法,只是承担传递事件的责任,但是这......

2017校招碎碎念

跌跌撞撞了两个多月,终于结束了校招招聘的岁月,工作也算是确定了下来。本来不太喜欢在博客上写这种非技术类的文章,但是不写点什么实在觉得有那么点不开心,也就写上一些东西。

以前的我一直天真地以为练好技术就好了,生活真的给了我当头一棒,简直要重新审视人生了。

关于笔试

个人非常讨厌笔试,真心不觉得笔试能够反映出什么东西。当然,我这么认为的原因也很简单,因为我基本过不了什么笔试。我也基本没怎么复习也没怎么练过。校招笔试一共参加了百度、阿里、腾讯、美团、滴滴、小米这几家的笔试,只有通过百度和美团的笔试。对于笔试这个东西我是非常之排斥,一是企业也不会很用心的出笔试题,譬如绝大多数企业在笔试的时候移动......

TableView组件化(解耦)方案

最近将自己做的项目进行组件化,恶补了很多关于组件化的知识。最终采用方案是CASA大大的iOS应用架构谈 组件化方案。但是在具体实施的时候,关于TableView的组件化遇到了很大的问题。

通常TableView的Cell会来自不同的组件,那么该如何交付Cell?

工程通常是采用MVC或者MVVM的,交付出Cell意味着也要将ViewModel拔出萝卜带出泥的全拉出来!其实不止是Cell,原则上讲,这其实涉及到所有的View的交付。关于这个事情咨询过CASA大大,给出的答复是

我的设计里面没有model。我也不主张在设计里面引入model,包括view model这种定义很暧昧的“mod......

网络请求依赖管理 & GCD信号量实践

很多时候会出现这种场景,有两个网络请求A和B,B需要在A访问完毕之后才能进行访问。也就是说,网络访问请求需要有一定顺序,即产生一定依赖关系。

请求A --> A返回值 --> 请求B --> B返回值

解决这个问题,第一时间想到的是NSOperation,毕竟AFNetworking 2.0时代所有的网络访问都是基于NSOperation,想到它自然而然。我们试图利用NSOperation自身提供的addDependency来添加这个依赖。但实际上这种方法并不能保证两个请求是按序进行的,这种方式只能保证请求A是在请求B发出之前发出,但是不能保证A返回值的未知,有可能出现以......

Block在函数式/链式编程中的应用 & 优化AOP方案

这几年函数式编程变得愈来愈火,Github上有很多Objective-C函数式编程的经典实现,譬如ReactiveCocoa、Mansory,将Block的特性发挥的淋漓尽致。之前一直只是仅仅在用,很少会自己实现函数式编程,借着最近有个需求,正好实践一番。

作为一个完整的App,当然少不了日志、统计等,这些代码散布的到处都是,有时候新建一个类,就忘记了加统计信息,到了上线才发现,这是件很崩溃的事情。后来看到Method Swizzling 和 AOP 实践,深受启发,于是将App内的友盟统计抽离出一个切面,将统计信息集中在一起,便于管理。由于采用hook的形式,所以也不用担心忘记给某个Cont......