iOS中protocol、category、继承的区别

1、protocol:

  只能声明一套接口,并不提供具体的实现,这样可以使任意的类以不同的方式去实现接口中的方法,就是为遵守     protocol的类提供了一些额外访问这个类的一些接口。UITabliView的两个代理。

 

2、category:

  为已有的类提供额外的接口和实现,当一个类非常大的时候,可以将这个类按照功能模块划分分散到不同的       category中,category也可以用于为某个类创建一些私有方法。

  缺点:

  1、category中不能提供重载,如果重载了,则不能对原有方法进行访问。而继承中可以使用super,如果需要对原     有方法进行重载,则考虑使用继承。比如新建一个ViewController会继承于UIViewController,而不使用         category,如果使用了category就无法调用父类super的一些方法了。

  2、若一个类有多个category,而这些category中有方法重名时,编译器将无法决定使用哪个。

  3、category不能创建实例变量,如果需要创建实例变量,请使用继承。


3、继承:

  继承是最强大的,protocol和category都可以实现,可以创建实例变量,使用继承的情况是既需要提供一些接     口的定义。又需要提供一些方法的实现,但是又不能提供全部实现的时候,考虑使用继承。

  缺点:

  对父类是完全依赖的关系,耦合度高,若有多层继承关系,继承关系复杂,不利于软件的开发和维护。 

你可能感兴趣的:(ios,继承,协议,ios开发,类别)