------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
协议(protocol)
1.协议就是定义了一组方法,然后让其他类去实现。一些方法的声明,一般写到一个.h的头文件中。
2.1)协议定义
例:@protocol xxx <NSObject> 默认情况下遵守NSObject协议
@end
2)两种方法:
(1)必须实现
@erquired关键字 一般默认情况下就是@erquired,必须实现方法的
(2)选择实现
@optional关键字修饰的方法是可以实现,也可以不用实现
例:@protocol baseProtocol <NSObject>
@optional
-(void)jump ;
因为是@optional可以不用实现jump方法。
3.协议的作用:供其他的类去遵守,如果一个类遵守了一个协议,就应该实现这个协议中定义的必须要实现的方法
4.类遵守协议的格式:
1)遵守一个协议:
先导入头文件
例:@interface 类名:NSObject <xxx>
@end
2)遵守多个协议:
例:@interface 类名:NSObject <xxx,aaa,ddd>
@end
4.使用协议的流程
定义协议:
让类遵守这个协议
实现协议里的方法
结论:当我们遵守了某个协议后,就相当于这个类有了协议中所有方法的声明
5.protocol 协议使用注意:
1).protocol就是一个用途,用来声明很多方法(不能声明成员变量),不能写实现。
2).只要某个类遵守了这个协议,就拥有了这个协议中所有方法的声明。
3).只要父类遵守了某个协议,子类也要遵守。
4).protocol声明的方法可以让任何类去实现,protocol就是协议。
5).oc中不能继承多个类(单继承),但是可以遵守多个协议。继承(:),遵守(< >)。
6).基协议:<NSObject>是基协议,是最基本的协议,其中声明了很多最基本的方法。
7).协议可以遵守协议,一个协议可以遵守另一个协议,就可以拥有另一个协议中的方法声明。
二protocol代理模式
1.代理模式就是传入的对象,代替当前类完成了某个功能。
利用协议实现代理模式的主要思路:
保姆(baonu)照顾baby的过程用代理模式实现:
1)定义一个协议,里面声明代理类需要实现的方法列表,代理类需要实现照顾baby(feedbaby)与哄baby睡觉(hongsleep)两个方法。
2)创建一个代理类(如baomu),遵守上面的代理协议。
3)在需要代理的类中(如baby),定义一个对象,类型为id,且遵守代理协议的成员变量(delegate)
4)在baby类中调用成员变量delegate的方法,调用代理类的方法
5)main.m或其他使用baby类的文件中,为baby类的成员变量赋值
2.代理模式应用的场景
(1)远程模式:为一个对象在不同地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实
(2)虚拟代理:是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象
(3)安全代理:用来控制真实对象访问时的权限
(4) 智能代理:是指当调用真是的对象时,代理去处理另外一些事情
思考与实现:代理模式设计,学生通过中介找房子的过程
定义协议:
创建学生类:
Studengt.h
Studengt.m
创建zhongJie类
zhongJie.h
zhongJie.m
main.m