网站建设资讯

NEWS

网站建设资讯

OC中的protocol-创新互联

类似于java中的interface接口类,没有含有抽象方法,让实现它的类,必须实现其中的方法

创新互联公司于2013年创立,是专业互联网技术服务公司,拥有项目网站建设、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元临清做网站,已为上家服务,为临清各地企业和个人服务,联系电话:028-86922220

OC中的协议(protocol):

1 1)Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现
2 2)只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明
3 3)只要父类遵守了某个协议,那么子类也遵守
4 4)Protocol声明的方法可以让任何类去实现,protocol就是协议
5 5)OC不能继承多个类(单继承)但是能够遵守多个协议,继承(:),遵守协议(<>)
6 6)基协议:基协议,是最根本最基本的协议,其中声明了很多最基本的方法
7 7)协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一个协议中的方法声明

protocol的使用流程

协议的使用流程:
    定义协议--->在类中采用指定的协议--->实现协议中的方法(注意方法有必须实现和选择实现两种)

    定义协议:
@protocol 协议名称
  //方法声明列表 @end;
            
            注意:协议默认的要采纳NSObject的协议

    采纳协议:
1)类遵守协议
                某个类遵守某个协议
@interface 类名 : 父类 <协议名称>
  @end

                某个协议遵守某个或者某些协议,一个协议可以遵守其他多个协议,多个协议之间用逗号  , 隔开.
@protocol 协议名称 <其他协议名称1,其他协议名称2>
  @end 2)  协议遵守协议
@protocol 协议名称<其他协议名称>
  @end;

创建协议

protocol中的@required 和 @optiona 的使用

 1 @required和 @optiona是协议方法声明中的两个关键字
 2 它们主要用于控制方法是否要实现(默认是@required),在大多数情况下,用途在于程序员之间的交流
 3 @required:这个方法必须要实现(若不实现,编译器会发生警告)
 4 @optional:这个方法可以选择实现(不实现,编译器不会发生警告)
 5 其实没什么价值,因为无论哪个修饰,无论实不实现,IOS是弱语法都不会对运行产生影响
 6     
 7         例: 
 8  @protocol RunProtocol
 9 
10             @required
11                 -(void)run;
12             @optional
13                 -(void)eat;
14  @end

protocol类型限制

 1 1.使用id存储对象时,对象的类型限制
 2 
 3         格式; id<协议名称> 变量名
 4 
 5     
 6         例:      @property (nonatomic,strong) id  person;
 7 //标示传入的对象 必须实现了指定的协议 8 
 9 2.对象赋值时类型限制
10         使用类也同样如此
11         格式: 类名<协议名称> *变量名
12         NSObject  *obj;
13 
14 3.对象关联关系下,对象的类型限制
15

protocol代理设计模式

1 代理模式概念:
2     传入的对象,代替当前类完成了某个功能,成为代理模式
3 
4 采用协议实现代理模式的主要思路为:
5   1)定义一个协议,里面声明代理类需要实现的方法列表,比如这里一个代理类需要实现meetingNotify与businessTrip方法
6 2)创建一个代理类(比如PersonAssistant,BossAssistant),遵守上面的代理协议
7 3)在需要代理的类中(Person),定义一个对象类型为id 且遵守代理协议的成员变量
8 4)在Person类中调用成员变量_delegate(代理)的方法,调用代理类的方法
9 5)main.m或其他使用Person类的文件中,为Person类的成员变量(代理类)赋值

protocol代理模式应用场合

1 1)监听器的场合
2 2)通知的场合
3 3)有写事情,不想自己处理,想交给别人处理

 protocol引用问题

 1 @class 代表这是一个类,具体引用在.m文件中 #import 进行导入
 2 
 3 同样 protocol 也可以这样
 4 在.h文件中
 5 @protocol workProtocol;//告诉编译器这是一个协议 6 @interface Person :NSObject 
 7  //这里会报一个Cannot find protocol的警告,可以不用理会 8 
 9 @end    
10 
11 要实现的时候在.m文件中
12 #import "workProtocol.h"13 
14 引入2:
15     也可以在类的.h文件中直接引入带实现
16   @protocol runProtocol 
17         -(void) run;
18   @end19

分享名称:OC中的protocol-创新互联
文章路径:http://cdweb.net/article/cdsigc.html