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