objective-C学习笔记(十一)类别和扩展

类别 类别是对外的,外部都可以访问

类别是在没有源代码或者基于某些特定场合的情况下,为一个类增加功能(方法)。或者用于给一个特别大的类进行分割。

命名规则:类名+扩展方法,如NSString 

可以添加:

  实例方法

  类方法

  重写基类方法

不可以添加:

  属性和实例变量 (其实可以变通的添加属性,就是添加访问器方法,然后在原来的类声明文件中添加一个实例变量。当然在类别的.h/.m文件中是不可以添加实例变量的,所以如果无法得到和更改源代码的话,是不能添加属性的)

  已存在的同名方法。(同名方法可以在实现类中重写)

扩展 扩展是对内的,类似私有成员,用于隐藏一些外部无法访问,而内部实现又需要的属性、方法。

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

扩展不能在另一个.h文件中声明,而应该定义在.m文件中@implementation前声明。实现代码仍然在@implemantation内实现。

扩展可以添加属性。

扩展里面没有optional,因为没有意义。

扩展实现的成员(属性、实例方法、类方法)都只能在.m实现文件内部访问,在类外不可以直接访问。

 

posted @ 2016-03-26 20:32  dom075  阅读(137)  评论(0编辑  收藏  举报