three20的几个类库说明,作者概括很不错的说

  Three20即320,因最初的iphone分辨率为320×480而得名。整个库分为Core,Network,Style,UICommone,UI和Navigator六个工程。下面就一一进行分析:

 

        Core

        Core是整个Three20的基础,为上层模块提供相应的支持:封装了一些常用的基础设施,比如NonRetainArray和NonRetainDictionary,应该是出于性能方面的考虑,对于一些当场申请当场释放的容器就没有必要进行额外的retain,内部是CF开头的c方法。其次还有部分版本信息:Three20版本,系统信息。而在下面几个分散的文件中主要使用Category和Extension实现了一些常用功能的封装,比如NSData的2种Hash方法(MD5,SHA1)和base64编码,以及NSArray遍历执行selector等。

 

        Network

        这个模块称之为Network模块其实很勉强,因为只有对HTTP的封装而已,包括用户数据,HttpRequest,HttpResponse,URLCache等。而iOS上目前的主流貌似是ASHttpRequest这个库,能够支持更多的特性,包括:异步请求,队列请求,gzip,缓存,断点续传等。而如果考虑到跨平台并只是为了支撑简单的数据交互也可以考虑curl。所以这个模块显得太有点鸡肋:论功能强大性不如ASHttpRequest,又没有curl的跨平台特性。所以Three20的主页中对它也是压根没提。

 

        Style和UICommon

        这两个库主要是为UI模块提供支持,在Style中定义了不计其数的各种Style以用于对程序UI表现做同一规划,而其余部分则是对UIKit中已有类的拓展,比如UIColor(增加HSB相关方法),UIFont(增加获取字高方法),UIImage(旋转和绘制)。而UICommon中的内容则更简单,最主要的类为继承自UIViewController的TTBaseViewController,通过notification机制,统一添加了对KeyBoard显示,隐藏和调整大小的处理。其余的部分也只是一些利用Category添加辅助方法的代码,在此不表。

 

        UI

        这个工程代码量较大,有大量已有控件的重实现和UIKit中没有的控件的实现,比较典型的有TTPhotoView,TTHumbView等,对于需要自己重写某些控件的童鞋来说有很大参考意义。不过不得不说的一句是:这些类都是TT开头的,实在是太反人类了,大家都用TT了,人类怎么繁衍呢?

 

        Navigator

        这个工程可以说是Three20的精髓所在:提供了一种基于URL映射到调用响应方法显示ViewController的机制,简化了使用Navigator时的一些重复代码,同时在一定程度上也起到了解耦的作用。其基本原理为:在程序启动后初始化一个map,储存以url和ViewController类为键值的数据,当使用Navigator进行页面切换时,相应的动作就可以简化为调用打开某个URL的方法(openURLAction):当这种方法被调用时,Navigator通过map查询到相应的ViewController,调用url中解析出的类方法,并传入参数进行初始化,最终pushViewController——整个流程都是自动完成,对于用户而言只需要关注二个地方:map的初始化,相应ViewController的构建。同时Navigator也提供了对相应路径进行持久化来记录操作过程的方法。

 

        总结

        就我个人而言,Three20中最喜欢的莫过于Navigator,对于基于Navigator的app实现会有很大的帮助。但是Three20其他模块显得有些鸡肋,除去几个支持模块外,最核心的三个模块Style,UI和Network似乎都有各种可替代的方案:Network可以用ASHttpRequest代替,Style在iOS5.0的UIAppearance概念出来也显得不是那么重要,而最重要的UI库则过于庞大和繁杂,定义了各种控件,但实际上能够拿来直接用的可能就只有几个。另一方面Three20本身过于庞大,因为核心工程基本都依赖于前面的几个基础工程,所以无法进行切割。基于这方面的考虑,如果没用到Naviagtor,Three20或许更适于参考代码而非集成使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值