Pan的简介和设计思路
Pan是一个我在2015年中开始设计并实现的一个安卓端的MV*框架,经过大量的实践和修正,现在的Pan已经十分稳定,成为项目中的核心框架。时至今日,安卓端的MVVM和MVP类型的框架也有一些,但和2015年相比,该有的问题依然存在,而Pan框架的设计思路,也仍然能够超越这些框架,在达到目的的同时,更方便开发者的上手和使用。
臃肿的Activity和Fragment
相信写安卓的人都深有体会,Activity里面一不小心就会有上千行的代码。安卓的MVC设计,Activity本身承担部分Controller的角色;而View的角色由View类型和XML来承担,同时View类型的EventListener由会承担部分的Controller角色;Model交给开发者自由选择。而一旦到真实的实践中,Activity或者Fragment往往会承担大量的代码,主要包含:
- 页面的生命周期管理,e.g. onStop
- View的渲染细节控制,e.g. 例如setText
- 用户交互事件的绑定,e.g. 例如setOnClickListener
- 异步网络请求
- Fragment生命周期管理
简单的页面或许没什么问题,一旦业务逻辑复杂,Activity到后期基本无法维护,因为要做的事情太多了。
iOS中富文本的AttributeNames
本文主要为项目中无处不在的NSAttributedString的属性做一次整理,方便之后开发时查询和测试
类型判断上的小技巧
iOS中如何优雅的应对无限闪退
如何判断 TextView 内容是否被缩略
MVVM的图形界面单元测试
Android单元测试详解(1)——— AndroidJunitTest
iOS中一个可以获得参数个数的宏
metamacro_argcount(…)
metamacro_argcount一个可以获得传入参数个数的Macro,1
2
3metamacro_argcount(NSObject, version); 结果为2.
metamacro_argcount(NSObject, version, super); 结果为3
metamacro_argcount(NSObject, version, nil); 结果为3
这个宏在编译期(并非运行期)就获得参数个数,是不是很神奇?来看看里面有什么鬼1
2
3//RACmetamacros.h中
#define metamacro_argcount(...) \
metamacro_at(20, __VA_ARGS__, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
需要展开下,以下就metamacro_argcount(NSObject, version)
做展开1
2
3metamacro_argcount(NSObject, version)
-->
metamacro_at(20, NSObject, version, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
ReactiveCocoa2-5修炼 (三)
上一篇做了流转化源码的阅读,再看看流还有哪些用的到的操作,并阅读下源码,
1.concat
2.then
3.merge
4.flatten