iOS 类别与扩展 geekband

类别Categroy

  • 类别支持在没有源代码的情况下,基于某些特定额场合,为一个类增加功能
    可以添加
    类方法
    实例方法
    重写基类方法

不可以添加
属性
实例变量
已存在的同名方法

  • 命名规范
    文件名称:类别+扩展方法:如 NSString +Deawing.h/.m

使用类别

-使用场景
适合没有源代码的情况下,向已经封住的类中添加方法
为一个类在某些特殊场景下增加功能
对于复杂的大型文件分割实现

-添加类别
自己创建的类
系统的类
第三方库

扩展

  • 扩展支持在编译时,有类的源代码的前提下 ,向类添加功能.可以将扩展做匿名的类别

  • 接口定义在.m文件中@implementation前声明,实现代码仍然在@implementation 内实现.

-扩展支持添加一下成员
属性
实例成员
类方法
实例方法
改写属性的读写属性

使用扩展

  • 扩展实现的成员都只能在.m实现文件内部访问,在类外不可以直接访问.

-扩展的主要用途在于信息隐藏,隐藏一些外部无需访问.而内部实现又需要使用的属性,.方法
类的主接口主要用于 "对类外公开"的接口
类的扩展接口主要用于 "对类内可见"的接口

你可能感兴趣的:(iOS 类别与扩展 geekband)