Nimbus初理解
博客专区 > AAAAdler 的博客 > 博客详情
Nimbus初理解
AAAAdler 发表于4年前
Nimbus初理解
  • 发表于 4年前
  • 阅读 6118
  • 收藏 28
  • 点赞 1
  • 评论 2

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 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的文档,用自己的方法来搞懂这个过程。语言组织得不好,逻辑有点散乱,忘见谅,以后会整理好的。


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

共有 人打赏支持
粉丝 5
博文 21
码字总数 23137
评论 (2)
Yisen
还以为是iwork的numbers
ryany
以前用过一段时间的three20
×
AAAAdler
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: