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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


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




定义协议
.h文件中


采纳协议
ClassA.h中,类声明的时候采纳协议


ClassA.m文件中 实现协议对应的方法




定义协议


@protocol 协议名称<NSObject>// 默认遵守NSObject协议
方法声明列表
@end


类遵守协议


@interface 类名:父类<协议名称>
一个类可以遵守 一个协议或者多个协议
多个协议用逗号隔开




使用协议的流程
定义协议
让类遵守这个协议
实现协议中对应的方法(必须要实现的)


遵守协议步骤


1 导入头文件
#import "baseprotocol.h"
遵守协议
@interface Person:NSObject<baseProtocol>
实现方法
在 .m中去实现


结论:当我们遵守了某个协议后,就相当于这个类有了协议中所有的方法的声明


3父类遵守了某个协议 子类也遵守


4protocol声明的方法可以被任何类实现


5OC不能多继承多个类 但是一个类可遵守多个协议
6基协议<NSObject>


7协议可以遵守协议


protocol基协议
NSObject是一个基类,最根本也是最基本的类,任何其他类最终都要继承它,他还有个名字叫NSObject的协议,他是一个协议最根本最基本的协议


NSObject协议中声明很多基本的方法


description
retain
release


建议每个新的协议都遵守NSObject协议






protocol中@required和@optional用法


用于控制方法是否要实现(默认是@required)
在大多数情况下,用途在于程序员之间的交流


@required 这个方法必须要实现 不实现发出警告


@optional表示选择实现的方法




protocol类型限制


增加类型限制
第一种类型限制给id类型增加限制
id<houseHold> obj=d;
表示obj只能赋值遵守了houseHold协议的对象


第二种类型限制
表示obj2赋值的时候必须是Girl对象,并且遵守了houseHold协议
Girl<houseHold> *obj2=d;


第三种类型限制
obj2.dog=d;
@property (nonatomic,strong)Dog<dui> *dog;// 对狗类型的要求<>


instancetype能精确的限制返回类型




protocol代理设计模式引入


第一步制定协议


第二步创建相关的类




baby.m
[self.bm feedBabyEat:self];
baby.h
@property (nonatomic,strong)BaoMu<lookBabyProtocol> *bm;




protocol代理设计模式


自己做不了让别人去做

0 个回复

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