OC---协议protocol <>

 

协议protocol <>

基本用途:

* 用来声明一大堆方法(不能声明成员变量)

* 只要某个类遵守了这个协议,就相当于拥有了这个协议中的所有方法声明

* 只要父类遵守了某个协议,就相当于子类也遵守了

* 一个类可以同时遵守多个协议

* 一个协议遵守另外一个协议,就可以拥有另一个协议的所有方法声明

 

总结:

1.协议的定义:

 @protocol  协议名 <NSObject>

  // 方法声明列表

  // …...

 @end

 

2.如何遵守协议

1> 类遵守协议

 @interface  类名 : 父类 <协议名1, 协议名2,...>

 @end

 2> 协议遵守协议

 @protocol  协议名 <要遵守的协议名1, 协议名2,...>

  // 方法声明列表

  // …...

 @end

 

3.协议中方法声明的关键字

 1> @required(默认)

    要求实现,如果没有实现该方法,会有警告。。。用于程序员交流

 2> @optional

    不要求实现,可以不实现,也可以实现

 

4.定义一个保存对象的变量时,限制这个变量保存的对象要遵守某个协议

  类名 <协议名>  *变量名 ;       NSObject <MyProtocol>  *obj;

  id <协议名>  变量名;              id <MyProtocol>  obj2;

 如果变量保存的对象没有遵守该协议,编译器会发出严重警告

 

5. @property中声明的属性也可以做一个遵守协议的限制

  @property (nonatomic, strong)  类名 <协议名>  *属性名;

  @property (nonatomic, strong)  Car <MyProtocol>  *car;

 

  @property (nonatomic, strong)  id <协议名>  属性名; 

  @property (nonatomic, strong)  id <MyProtocol>  obj; 

 

6.协议可以定义在单独的.h文件中,也可以定义在某个类的.h文件中

 1> 如果这个协议只用在某个类中,应该把协议定义在该类的.h文件中

 2> 如果这个协议用在很多类中,就应该定义在单独的.h文件中

   

   分类可以定义在单独的.h和.m文件中,也可以定义在原来类的.h和.m文件中

    1> 一般情况下,都是定义在单独的.h和.m文件中

    2> 很少情况定义在原来类中

 

posted on 2015-04-08 09:55  我是一匹小黑马  阅读(304)  评论(0编辑  收藏  举报