专栏名称: 3033
iOS开发
目录
相关文章推荐
福建省文化和旅游厅  ·  1金1银3铜!“福建礼物”旅游商品在全国大赛 ... ·  2 天前  
文明贵州  ·  贵州丰富文旅产品供给 迎接旅游旺季 ·  3 天前  
掌中庆阳  ·  六月的庆阳,定格夏日的每一帧心动 ·  3 天前  
掌中庆阳  ·  六月的庆阳,定格夏日的每一帧心动 ·  3 天前  
51好读  ›  专栏  ›  3033

谈谈Category和Extension

3033  · 掘金  ·  · 2017-12-14 00:35

正文

请到「今天看啥」查看全文


我们来看一下上面的两张appdelegate.m的内容,两个简单的小工程中,一个的内容中有上百行甚至几百行的代码,另一个却只有几行,我们先不说Category的别的功能单单是代码的分块,清晰条理和代码的可读性上就值得我们研究一番更何况他不止于此呢。 ###创建方法 既然那么好用我们怎么创建他呢,话不多说上图片。

创建1.png

创建2.png
###原理 #####Category

  • 有两方面局限性: (1)无法向类中添加新的实例变量,类别没有位置容纳实例变量。 (2)名称冲突,即当类别中的方法与原始类方法名称冲突时,类别具有更高的优先级。类别方法将完全取代初始方法从而无法再使用初始方法。
  • 主要有3个作用: (1)可以将类的实现分散到多个不同文件或多个不同框架中,方便代码管理。也可以对框架提供类的扩展(没有源码,不能修改)。 (2)创建对私有方法的前向引用:如果其他类中的方法未实现,在你访问其他类的私有方法时编译器报错这时使用类别,在类别中声明这些方法(不必提供方法实现),编译器就不会再产生警告 (3)向对象添加非正式协议:创建一个NSObject的类别称为“创建一个非正式协议”,因为可以作为任何类的委托对象使用。

####Extension







请到「今天看啥」查看全文