码迷,mamicode.com
首页 > 其他好文 > 详细

分类 类扩展 继承 协议 委托

时间:2016-05-03 23:52:15      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

分类 类扩展 继承 协议 委托

 

分类(Category)

  • 不产生新类,不修改原类,但有自己的.h和.m文件
  • 分类只能向原类中增加方法,或者重写原类的方法
  • 声明的@property只会生成getter setter方法的声明
  • 类.h中定义的方法必须实现,但分类.h中定义的方法,可以不实现
  • 同名方法,分类的优先级高
    类别主要有3个作用:
    (1)将类的实现分散到多个不同文件或多个不同框架中。
    (2)创建对私有方法的前向引用。(类.h中未声明,但存在于.m中的私有方法,通过在分类.h中声明一下,就可以在其他类中进行调用了,如不前向引用,则报警告)
    (3)向对象添加非正式协议。(括号是非正式协议,尖括号是正式协议) 非正式协议的方法可以不实现。

类扩展(Extensions)

  • 类扩展和协议形式类似,都只有.h文件。但类扩展属于某个类的声明,协议不属于任何类,只是一组方法的声明。
  • 类扩展中声明的方法必须实现
  • 可以添加实例变量
  • 不产生新类,只有.h文件,一般直接写在所属类的.m文件中
  • 类扩展如果独立写一个文件,则声明的变量/属性/方法都是公开的,作用和类.h基本一样
  • 类扩展如果写在类.m文件中,则类扩展中声明的实例变量/属性/方法都属于类私有,不能在其他类和子类中访问。

类继承/子类(Inherit)

  • 产生了新类
  • 子类继承父类所有的实例变量、属性、方法(包括.m中的私有的),但是无法直接访问他们,可以理解为父类私有的变量/属性/方法只在父类.m中有效,而子类中已经超过它们的作用与,故不能访问。
  • 可以继续给子类添加实例变量
  • 子类可重写父类(即声明和父类同名的方法),调用重写的同名方法,优先调用子类中方法

 

协议(Protocol)

  • 不属于哪个类,只是定义一组方法,只有.h文件,一般直接写在某个类的.h文件中。
  • 声明的@property只会生成getter setter方法的声明
  • 只声明方法,由代理实现方法
  • 支持多继承

委托(delegate)

  • 主要用于解耦

 

分类 类扩展 继承 协议 委托

标签:

原文地址:http://www.cnblogs.com/stevenwuzheng/p/5456738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!