Facebook出得这个AsyncDisplayKit严格意义上讲,已经远远超出了超出了AsyncDisplay的范围.
我个人在最开始思考AsyncDisplay的时候,只是觉得这是一个解决异步渲染的问题,可能是最大限度的在layer层display的时候做文章,直到我粗略了学习了下他的源码,才发现,我只看到了ASDK中很小很小很小的一块。
ASDK其实已经十分庞大,涵盖了AsyncQueueControl(异步队列控制),在队列控制基础上封装的AsyncFetchData(异步数据准备),AsyncLayout(异步UI布局计算),AsyncTextLayout(异步文字排版),AsyncDisplay(异步绘制)并且又在此之上,重写了一整套几乎我们能用到的所有UIKit控件,小到ImageView,Button,Text,大到Tableview,CollectionView,再到ViewController,全都一一对应重写了一套ASDK的ASXXNode
因此,使用ASDK的开发者,面临的最大问题是,虽然ASDK各方面的用法都是尽可能做到很像UIKit的,并且支持兼容从旧的UIKit生成新的ASNode,但是如果想使用ASDK,势必得完全改变以前的编码习惯,以前的旧代码,再开发UI的时候,完全使用ASXX开头的控件,放弃苹果官方的frame布局,或者官方的autolayout,转而使用ASDK的layout方案(支持自己扩展),如果涉及文字,也要使用ASText相关的富文本描述(支持自己扩展)
对于我们来说,想要引入ASDK,代价真的是太大了