OC-EX37Protocol

OC-EX37Protocol

 

 6.协议也能遵守(继承)协议main.m
 1  //
 2  //   main.m
 3  //   Protocol
 4  //
 5  //   Created by sixleaves on 15/5/13.
 6  //   Copyright (c) 2015年 itcast. All rights reserved.
 7  //
 8 
 9 #import <Foundation/Foundation.h>
10 #import "Person.h"
11 #import "Dog.h"
12 #import "WPProtocol.h"
13  int main( int argc,  const  char * argv[]) {
14      /*
15          Dog没有遵守WPProtocol协议,
16          Person遵守了WPProtocol协议,
17          WPProtocol又遵守GHProtocol协议
18        */
19     
20     Person *p = [[Person alloc] init];
21     
22     [p test1];
23     
24     
25     Person<GHProtocol> *p2 = [[Person alloc] init];
26     [p2 love];
27     
28      //  Dog对象没遵守WPProtocol,所以会有警告。
29      Dog<WPProtocol> *d = [[Dog alloc] init];
30     
31     
32      return 0;
33 }
34  /*
35   1.protocol的作用(什么是协议、用途):
36      用来声明一大堆的方法。
37 
38   2.协议的语法:
39   
40   @protocol WPProtocol <NSObject>
41   
42   @end
43   遵守协议的语法:<协议名>
44   采用多协议语法:<协议1, 协议2, >
45   
46   3.基协议:
47   NSObject是一个基协议和基类同名,几乎所有的OC协议都要遵守NSObject协议。
48   基协议声明了很多常用的接口。所以自己写得protocol最好也要遵守基协议。
49   
50   4.限制对象类型
51     限制变量只能保存遵守某个、某些协议的对象
52     如果不遵守会有警告。
53   
54   5.协议前置声明(@protocol 协议名;)
55     与类的前置声明的原因一样,在.h文件中仅仅需要知道是个协议就行,所以可用前置声明
56     在.m文件中,需要知道其内部构造,再导入。

     6.协议也能遵守(继承)协议


57    */

WPProtocol.h
 1  //
 2  //   WPProtocol.h
 3  //   Protocol
 4  //
 5  //   Created by sixleaves on 15/5/13.
 6  //   Copyright (c) 2015年 itcast. All rights reserved.
 7  //
 8 
 9 #import <Foundation/Foundation.h>
10 #import "GHProtocol.h"
11 @protocol WPProtocol <NSObject, GHProtocol>
12 
13 - ( void)test1;
14 @required
15 - ( void)test2;
16 - ( void)test3;
17 - ( void)test4;
18 @optional
19 - ( void)test5;
20 
21 @end
22 

你可能感兴趣的:(OC-EX37Protocol)