分类Category/扩展Extension/继承/协议@protocal

1.继承

用的最多了,比如继承一个基类控制器



继承和分类的区别

2.分类 

添加属性的话要用到runtime关联方法

什么时候要用分类呢?

1.1作用:可以在不修改原来类的基础上,为一个类扩展方法。

1.2最主要的用法:给系统自带的类扩展方法。

3.将类的实现分散到多个不同文件中 方便代码管理,比如cg项目中的 入口地方的拆分



3.扩展 

1.类扩展(extension)是category的一个特例,有时候也被称为匿名分类。他的作用是为一个类添加一些私有的成员变量和方法。

2.类扩展能写点啥?和分类不同,类扩展即可以声明成员变量又可以声明方法。

3.类扩展听上去很复杂,但其实我们很早就认识他了。你记得继承自UIViewController的ViewController和继承自NSObject的类有什么不同么?

4.继承自UIViewController的ViewController类

5.对比看一下继承自NSObject的类我们会发现没有上面的代码块

@interface ViewController()//这就是类扩展的写法

@end

6.类扩展可以定义在.m文件中,这种扩展方式中定义的变量都是私有的,也可以定义在.h文件中,这样定义的代码就是共有的,类扩展在.m文件中声明私有方法是非常好的方式。

7.类扩展中添加的新方法,一定要实现。categorygory中没有这种限制。


4.协议

写代理的时候要用到

@optional 是可选实现

使用注意:

就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现

只要某个类遵守了这个协议,就永拥有了这个协议中的所有方法声明

只要父类遵守了某个协议,那么子类也遵守

Protocol声明的方法可以让任何类去实现

OC不能继承多个类,但是能遵守多个协议

基协议:是基协议,是最根本最根本的协议,其中声明了很多最基本的方法,比如description,retain,release

协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一份协议中的方法声明

你可能感兴趣的:(分类Category/扩展Extension/继承/协议@protocal)