A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© runsunlife 中级黑马   /  2015-8-27 06:37  /  571 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

协议
1、protocol的使用流程
1)定义协议  

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

2)采纳协议  
1>类遵守协议  
创建类的时候遵守某个或者某几个协议

@interface 类名 :父类 <协议名称>  
@end  
//默认遵守NSObject协议  
@interface 类名 :父类 <协议名称1,协议名称2>  
@end  
某个协议也遵守某个或者某些协议,一个协议可以遵守其他多个协议,  
2>协议遵守协议  
@protocol 协议名称 <其他协议名称>  
@end  
多个协议之间用逗号 , 隔开。  
@protocol 协议名称 <其他协议名称1, 其他协议名称2> @end  
实现协议中的方法  

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

使用Protocol时还需要注意的是:  
1>protocol也可以采纳其他的协议,比如:  
@protocol A  
-(void)methodA;  
@end
@protocol B <A>  
-(void)methodB;
@end

如果你要遵守B协议,那么methodA和methodB都需要实现
2>类如果采纳协议后,实现了协议的方法,这些方法可以被子类继承  
比如:
Person类采纳了Run和Work两个协议,并实现了两个方法

3、protocol基协议介绍  
NSObject是一个基类,最根本最基本的类,任何其他类最终都要继承它,它还有名字也叫NSObject的协议,它是一个基协议,最根本最基本的协议  
NSObject协议中声明很多最基本的方法  
description  
Retain  
release
建议每个新的协议都要遵守NSObject协议  

4、protocol中@required和@optional  
@required和@optional是协议方法声明中的两个关键字 他们主要用于控制方法是否要实现(默认是@required),在大多数情况下,用途在于程序员之间的交流  
@required:这个方法必须要实现(若不实现,编译器会发出警告)  
@optional这个方法不一定要实现

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

6、protocol代理模式应用场合  
   代理设计模式的场合:
     当对象A发生了一些行为,想告知对象B (让对象B成为对象A的代理对象)
     对象B想监听对象A的一些行为 (让对象B成为对象A的代理对象)
     当对象A无法处理某些行为的时候,想让对象B帮忙处理 (让对象B成为对象A的代理对象)  

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马