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)。

不同的地方是,Nimbus使用简单工厂模式,输出得到指定的cell。


cellObject中重写

- (Class)cellClass

来返回得到指定的cell类型。

而在cell中,方法

- (BOOL)shouldUpdateCellWithObject:(id)object

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


NITableViewModel的作用,其实是处理得到的数据,它实现了UITableViewDataSource的方法

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

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


- (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]则调用类方法。

这里,到底要调用静态方法,还是实例方法,是看具体情况的需要。当一整个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的文档,用自己的方法来搞懂这个过程。语言组织得不好,逻辑有点散乱,忘见谅,以后会整理好的。


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

转载于:https://my.oschina.net/u/574245/blog/227167

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值