码迷,mamicode.com
首页 > 其他好文 > 详细

OC中的protocol

时间:2015-05-15 19:42:48      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

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

OC中的协议(protocol):

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

protocol的使用流程

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

    定义协议:
            @protocol 协议名称<NSObject>
                //方法声明列表
            @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<NSObject>
 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 <MyProtocol> person;
 7                     //标示传入的对象 必须实现了指定的协议
 8 
 9 2.对象赋值时类型限制
10         使用类也同样如此
11         格式: 类名<协议名称> *变量名
12         NSObject <Myprotocol> *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)有写事情,不想自己处理,想交给别人处理

 

OC中的protocol

标签:

原文地址:http://www.cnblogs.com/developer-wang/p/4506531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!