Nimbus初理解

Three20框架的中止更新,再接着使用Three20框架用于开发,就显得存在隐患。幸亏,Three20中的一位做者,开发出了一套轻量型框架Nimbus。相比Three20,Nimbus小了不少,固然,如今也在慢慢成长,同时,Nimbus的耦合性没那么高,支持命名空间,这是两个很大的优势。框架

应用中使用最多的controller,普通的viewController和tableViewController,特别是后者。关于tableViewController,从controlelr到dataSource到cell,Nimbus、Three20都有本身的一套流程。若是你熟悉或者使用过研究过Three20,会发现二者之间不少类似的地方,item(Three20)对应cellObject(Nimbus),dataSouce(Three20,其实不是tableView的dataSource)对应niTableModel(Nimbus)。spa

不一样的地方是,Nimbus使用简单工厂模式,输出获得指定的cell。code


cellObject中重写继承

- (Class)cellClass

来返回获得指定的cell类型。开发

而在cell中,方法文档

- (BOOL)shouldUpdateCellWithObject:(id)object

来获得对于cellObject,从而取出所需的数据。博客


NITableViewModel的做用,实际上是处理获得的数据,它实现了UITableViewDataSource的方法产品

-(UITableViewCell *)tableView: (UITableView *)tableView
         cellForRowAtIndexPath: (NSIndexPath *)indexPath

这其中self.delegate的方法是工厂的产品输出方法,而NICellFactory负责处理这个,方法以下,it


- (UITableViewCell *)tableViewModel:(NITableViewModel *)tableViewModel
                   cellForTableView:(UITableView *)tableView
                        atIndexPath:(NSIndexPath *)indexPath
                         withObject:(id)object

+ (UITableViewCell *)tableViewModel:(NITableViewModel *)tableViewModel
                   cellForTableView:(UITableView *)tableView
                        atIndexPath:(NSIndexPath *)indexPath
                         withObject:(id)object

上面这个方法有两种,静态的和实例的,当使用的model的delegate是NICellFactory实例,则调用实例方法,是[NICellFactory Class]则调用类方法。table

这里,到底要调用静态方法,仍是实例方法,是看具体状况的须要。当一整个tableView只须要一种cell的时候,建议使用静态方法,固然cellObject要指定对应的cell类型;当须要修改cellObject指定的cell,在不须要或者懒得去新建一个彻底继承、不用重写原来cellObject类的子类的时候,能够考虑使用实例方法。

固然,多数状况下,在项目中会使用到实例方法,由于咱们能够有一个baseCellObject和一个baseCell,baseCellObject具有最基本的属性和方法,而baseCell指定映射就能够,后来咱们自定义的cell都继承baseCell,再调用NICellFactory来修改baseCellObject到cell的映射就能够知足大部分须要。

下面是NICellFactory修改映射的方法:

- (void)mapObjectClass:(Class)objectClass toCellClass:(Class)cellClass


ps:想写这篇关于Nimbus的理解心得很久了,由于网上能查到的Nimbus资料实在是太少了,本身是个菜鸟初学者,别人一些用Nimbus写好的框架,有的实在是看不太懂,而后其实到头来,仍是要看懂,至少了解Nimbus的构架的,因此仍是乖乖地读Nimbus的文档,用本身的方法来搞懂这个过程。语言组织得很差,逻辑有点散乱,忘见谅,之后会整理好的。


声明:今天想搜一点资料,竟然在别的地方搜到本身这篇博客,我只想说,欢迎转载和分享,但请注明出处。

相关文章
相关标签/搜索