category & extension是什么 区别有哪些【详细介解】

今天爱分享给大家带来category & extension是什么 区别有哪些【详细介解】,希望能够帮助到大家。
类别主要有三个作用

⑴可以将类的实现分散到多个不同文件或多个不同框架中,方便代码管 理。也可以对框架提供类的扩展(没有源码,不能修改)。

⑵创建对私有方法的前向引用:如果其他类中的方法未实现,在你访问其 他类的私有方法时编译器报错这时使用类别,在类别中声明这些方法(不 必提供方法实现),编译器就不会再产生警告

⑶向对象添加非正式协议:创建一个NSObject的类别称为“创建一个非正 式协议”,因为可以作为任何类的委托对象使用。

他们的主要区别是:

1、 形式上来看,extension是匿名的categoryo

2、 extension里声明的方法需要在mainimplementation中实现,category不 强制要求。

3、 extension可以添加属性(变量),category不可以。

Category和Exte nsio n都是用来给已定义的类增加新的内容的。

Category和原有类的耦合更低一些,声明和实现都可以写在单独的文件 里。但是只能为已定义类增加M ethod,而不能加入in sta nee variable o Exte nsio n耦合比较高,声明可以单独写,但是实现必须写在原有类的 @impleme ntatio n中。可以增加 M ethod 和 in sta nee variable o

Exte nsio n给人感觉更像是在编写类时为了封装之类的特性而设计,和类是 同时编写的。而category则是在用到某一个framework中的类时临时增加的 特性。

Exte nsio n 的一个特性就是可以 redeclare—个 in sta nee variable,将之从 reado nly 改为对内 readwrite.

使用Exten sio n可以更好的封装类,在h文件中能看到的都是对外的接口, 其余的in sta nee variable和对内的@propert y等都可以写在Exte nsio n,这样 类的结构更加清晰。

人已赞赏
IOS

UDID & UUID是什么【详细介解】

2020-12-8 10:30:42

IOS

Core Foundation中提供了哪几种操作Socket的方法【详细介解】

2020-12-8 12:07:30

'); })();