protocol及代理模式应用及理解
来源:互联网 发布:svd求逆矩阵 编辑:程序博客网 时间:2024/04/29 01:59
一、定义协议
协议就是一些方法的声明,一般写到一个.h的头文件中.
协议的定义:(默认情况下遵守 NSObject协议)
声明的方法有两种:
二,遵守协议
(让某个类遵守协议,一个类可以遵守多个协议,在<>中用逗号隔开)
三,实现协议中的方法
(在类的.m文件中实现协议中的方法)
@end
1,一个协议也可以遵守其他的协议;
protocol的其他用法:
2,@required 和 @optional 都是协议中的关键字
3,protocol类型限制
4,id和instancetype的区别
5,代理模式,
思路:
6,@protocol关键字,告诉编译器,这是一个协议.
在.m文件中使用的时候,需要导入这个协议.
#pragma mark main.m
#import
#import"Person.h"
intmain(intargc, constchar* argv[]) {
}
#pragma mark
#import
//基础协议
// eat
//Person 采纳这个协议
//定义一个协议
//使用协议的流程:
// --> 定义协议
//--> 让类遵守这个协议
//--> 实现协议中对应的方法(必须要实现的)
#import"workProtocol.h"
@protocolbaseProtocol <<span style="font-variant-ligatures:no-common-ligatures; color: #703daa">NSObject,workProtocol>
//声明一些方法
-(void)eat;
-(void)run;
@end
#pragma mark
#import
//遵守协议的步骤:
// 1) 导入头文件
#import"baseProtocol.h"
//#import "workProtocol.h"
// 2) 遵守协议
// 3) 实现方法
//结论:当我们遵守了某个协议后,就相当于这个类有了协议中所有的方法的声明
@interfacePerson : NSObject<<spanstyle="font-variant-ligatures: no-common-ligatures; color:#4f8187">baseProtocol>
@end
#pragma mark
#import"Person.h"
@implementation Person
-(void)eat{
}
-(void)run{
}
-(void)work{
}
@end
#pragma mark
#import
@protocolworkProtocol<<span style="font-variant-ligatures: no-common-ligatures;color: #703daa">NSObject>
-(void)work;
@end
代理模式的代码实现:
#pragma mark
#import
#import"BaoMu.h"
#import "Baby.h"
intmain(intargc, constchar* argv[]) {
}
#pragma mark
#import
@class BaoMu;
#import"lookBabyProtocol.h"
@interface Baby: NSObject
@property (nonatomic,assign)float blood;
@property (nonatomic,assign)float sleep;
//保姆、体力值、睡眠值
@property(nonatomic,strong)BaoMu<</span>lookBabyProtocol>*bm;// id delegate;
-(void)wantEat;
-(void)wantSleep;
@end
#pragma mark
#import "Baby.h"
#import"BaoMu.h"
@implementation Baby
-(void)wantEat{
}
-(void)wantSleep{
}
@end
#pragma mark
#import
//保姆想成为baby的代理人,就必须遵守lookBabyProtocol协议
#import"lookBabyProtocol.h"
@interfaceBaoMu :NSObject<</span>lookBabyPrwotocol>
@end
#import"BaoMu.h"
#import "Baby.h"
@implementation BaoMu
//喂婴儿吃饭
-(void)feedBabyEat:(Baby*)baby{
}
//哄婴儿睡觉
-(void)HongBabySleep:(Baby*)baby{
}
@end
#pragma mark
#import
@class Baby;
@protocollookBabyProtocol <<span style="font-variant-ligatures:no-common-ligatures; color: #703daa">NSObject>
//喂婴儿吃饭
-(void)feedBabyEat:(Baby*)baby;
//哄婴儿睡觉:(Baby*)baby
-(void)HongBabySleep:(Baby*)baby;
@end
- protocol及代理模式应用及理解
- 学习笔记:OC的protocol协议及代理设计模式
- Protocol基础知识及应用
- Protocol协议及委托代理
- Java代理模式及应用(一)代理模式介绍
- 代理模式--介绍、应用及代码
- 理解动态代理及动态代理在RPC中的应用
- 代理模式-Java动态代理的实现及应用
- Strategry模式简单理解及应用
- Java设计模式之《代理模式》及应用场景
- Java设计模式之《代理模式》及应用场景
- 代理模式及动态代理
- 代理模式(普通代理及动态代理)
- Java代理模式及应用(三)Cglib实现
- 动态代理及反射在工厂模式上的应用
- Java代理模式及应用(二)静态代理与动态代理
- 代理模式@protocol
- protocol代理设计模式
- history命令显示执行时间--CentOS6.3
- ARC的理解及应用
- 分类的理解及应用
- block的应用
- Android重启应用和重启手机
- protocol及代理模式应用及理解
- CSS3 圆角详解
- 黑马程序员-Foundation框架及NSStr…
- 选择控制语句if和switch
- 函数的理解及代码实现
- 冒泡排序,选择排序的理解及代码实…
- HR直言:这几类求职者不会要!
- Java锁定USB
- 字符串的理解及代码实现