文档章节

Nimbus初理解

A
 AAAAdler
发布于 2014/04/27 00:25
字数 778
阅读 6297
收藏 28
点赞 1
评论 2

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


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

© 著作权归作者所有

共有 人打赏支持
A
粉丝 3
博文 26
码字总数 23250
作品 0
广州
加载中

评论(2)

ryan8877
ryan8877
以前用过一段时间的three20
Yisen
Yisen
还以为是iwork的numbers
Storm笔记整理(三):Storm集群安装部署与Topology作业提交

[TOC] Storm分布式集群安装部署 概述 Storm集群表面类似Hadoop集群。但在Hadoop上你运行的是”MapReduce jobs”,在Storm上你运行的是”topologies”。”Jobs”和”topologies”是大不同的,...

xpleaf
04/13
0
0
Storm nimbus HA

一、storm组件 Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作: 1. Worker(进程) 2. Executor(线程) 3. Task 下图简要描述了这3者之间的关系: 1个wor...

Adel
2016/04/11
344
0
twitter的实时数据处理分析工具-Storm

Twitter在9月19日的Strange Loop大会上公布Storm的代码,是一个类似于Hadoop的即时数据处理工具,由BackType开发的,后来被Twitter收购用于Twitter进行实时数据处理分析。 Twitter列举了Sto...

红薯
2011/09/20
5.5K
5
JStorm的客户端提交问题

平时我们发布Topology,都是在后台用 ./jstorm jar xxxxx.jar com.xxxx.xxxTopolog arg0,arg1 来将Topology发布到storm上 现在我用程序直接去发布Topology,但老是出现问题: Topology发布的...

锋_行者
2015/10/25
699
1
50TB ExaDrive SSD投入商用,EB级容量闪存系统来日可期

Nimbus Data在2016年8月宣布推出了ExaFlash阵列。之后又推出ExaDrive并将其作为OEM SSD产品提供给Viking和SMART Modular Technologies这样的SSD OEM厂商。ExaDrive采用3.5英寸规格,有22.9T...

btb5e6nsu1g511eg5xeg
2017/12/05
0
0
Storm相关概念与配置项

一、Storm与Trident的区别 1、Trident是对Storm的更高一层的抽象,除了提供一套简单易用的流数据处理API之外,它以batch(一组tuples)为单位进行处理,这样一来,可以使得一些处理更简单和高效...

Adel
2015/07/10
169
0
storm的使用笔记

storm的使用笔记 1. 关于log 用storm jar ...将项目提交给storm集群后,想查看本项目的log信息,要到supervisor机器的:storm安装路径/logs/worker-number.log(其中的number视实际情况而定)...

writeademo
2016/12/16
7
0
IaaS 解决方案--Nimbus

Nimbus 是一种以科学计算为中心的 IaaS "Infrastructure-as-a-Service" 解决方案。使用 Nimbus,你可以借用远程资源(比如由 Amazon EC2 提供的远端资源)并能对它们进行本地管理(配置、部署...

匿名
2010/04/22
2.7K
0
1、storm的安装

1:在一台机器上安装,然后拷贝到其他机器上即可,分布式软件的安装都是这个套路,软件包和配置文件都是一样的,只是启动的时候,启动不同的模块就行了。 1、解压tar.gz包到指定目录 tar -z...

刘付kin
2016/12/04
15
0
TIBCO产品体系介绍【原创】

TIBCO是一家有着二三十年历史的老牌中间件公司,起名源于The Information Bus Company,现在官网的主要定位是Global Leader in Integration and Analytics Software。 TIBCO的产品线有过一些...

小刺猬君的日常
2017/11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
24分钟前
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
41分钟前
4
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
58分钟前
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0
There is no session with id[xxx]

参考网页 https://blog.csdn.net/caimengyuan/article/details/52526765 报错 2018-07-19 23:04:35,330 [http-nio-1008-exec-8] DEBUG [org.apache.shiro.web.servlet.SimpleCookie] - Found......

karma123
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部