Objective-C 学习四 Protocal 与 Category

来源:互联网 发布:树莓派可以装windows吗 编辑:程序博客网 时间:2024/04/29 18:17

protocal 协议:

协议事实上是一组方法列表,不依特定的类。使用协议可以使不同的类共享相同的消息。


协议的定义:

@protocal  协议名

方法声明;                                                     默认的情况下,这个方法是必须要被实现的

@optional   方法声明;                                    这个是可选择实现的方法

@required  方法声明;                                 必须实现的方法

@end


协议在类中的声明:

@interface  类名:父类名<协议名>

xxxxx

@end


有的网友说协议很像Java中的接口,也有的人说是Java中的接口与泛型的结合体。好吧,不熟悉Protocal呢,但是个人感觉更倾向第一种说法。

但protocal与Java 中的interface不同在于方法不是必须实现的。

 参考(看一下协议实现的不同方式):http://blog.csdn.net/a352193394/article/details/8100248



Category 分类:

重点参考:http://bbs.itheima.com/thread-117162-1-1.html

Category依赖具体的类。Category的作用就是对已有的类的扩展,就像在一个类上面外挂一个模块(让我想起了美国军舰模块化设计、生产,果然这些思想都是相通的)。


Category的声明:

@interface 类名(分类名)

新增方法的声明

@end


定义方法

@implementation 类名(分类名)

新增方法的定义{

      xxxxxx

}

@end


调用的时候与类中方法调用一样。


Category注意点:

1  分类只能增加方法,不能增加成员变量;

2 在分类方法的实现中可以访问原来类中的成员变量;

3 分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(所以我们最好不要在Category中重载);

4 方法调用优先级:匪类->原来的类->父类;

5 一个类可以定义多个Category,但,如果不听的Category中存在相同的方法,编译器无法决定使用哪个Category;

6 Category是可以被继承的;




0 0
原创粉丝点击