黑马程序员 protocol协议基本知识
来源:互联网 发布:吉林大学的网络教育 编辑:程序博客网 时间:2024/06/07 12:02
protocel协议概念及作用:声明一些必须实现和选择实现的方法
使用流程:
1.定义只生成一个.h文件
@protocol base <NSObject>
@end
2.采纳
类采纳协议
@interface Person : NSObject<base>
@end
3.实现协议中的方法
在类的.m中实现协议声明的方法
所有的协议都是采纳nsobject
一个协议可以采纳另一个协议
类和协议可以采纳多个协议<协议1,协议2,协议3...>
protocol使用注意:仅用来声明方法,谁采纳谁实现方法
只要父类遵守了协议,子类也遵守
oc不能继承多个类,但是能遵守多个协议(单继承,多采纳)
@protocol的两个关键字
@required 必须实现
@optional 选择实现
protocol代理设计模式:传入的对象代替当前类完成了某个功能,称为代理模式:
1.定义协议,声明方法
2.创建代理类,遵守上面的代理协议
3.在需要代理的类中,定义一个对象,类型为id且遵守代理协议的
4.在代理类中调用对象,调用代理类的方法
5.在main.m中实现
#import <Foundation/Foundation.h>
#import "agreement.h"
#import "Baby.h"
#import "Nanny.h"
#import "PlayWithBaby.h"
int main(int argc,const char * argv[]) {
@autoreleasepool {
Baby *baby=[Babynew];
Nanny *nany=[Nannynew];
baby.houseMaid=nany;
[baby eat];
[baby play];
}
return0;
}
#import <Foundation/Foundation.h>
#import "agreement.h"//导入协议
#import "PlayWithBaby.h"
@interface Baby : NSObject
@property(nonatomic,strong)id<agreement,PlayWithBaby> houseMaid;//婴儿中有个保姆的属性
-(void)eat;//婴儿自己的行为
-(void)play;
@end
#import "Baby.h"
@implementation Baby
-(void)eat{
NSLog(@"I'm a baby,and i'm hungry!");
[self.houseMaidfeedBaby];//调用保姆照料的方法
}
-(void)play{
NSLog(@"I want to play");
[self.houseMaidPlayWithBaby];
}
@end
#import <Foundation/Foundation.h>
#import "agreement.h"
#import "PlayWithBaby.h"
@interface Nanny :NSObject<agreement,PlayWithBaby>//照料小孩者应采纳协议,即遵守协议,可以采纳多个协议
@end
#import "Nanny.h"
@implementation Nanny
-(void)feedBaby{
NSLog(@"I'm a domestic help,and i can take care of baby professionally!Yes,i'm feeding");//在保姆的.m文件中实现方法
}
-(void)PlayWithBaby{
NSLog(@"Baby have finished ,i'm playing with him");
}
@end
#import <Foundation/Foundation.h>
@protocol agreement <NSObject>
-(void)feedBaby;//在协议中声明方法,相当于合同中的条款
@end
#import <Foundation/Foundation.h>
#import "agreement.h"
@protocol PlayWithBaby <agreement>//一个协议可以采纳另一个协议
-(void)PlayWithBaby;
@end
- 黑马程序员 protocol协议基本知识
- 黑马程序员---Protocol协议
- 12.黑马程序员-protocol(协议)
- 黑马程序员_@protocol 协议
- 黑马程序员--Protocol 代理协议
- 黑马程序员_OC_block和protocol协议
- 黑马程序员--OC--Protocol(协议)
- 15、黑马程序员-OC Protocol(协议)
- 黑马程序员-OC语言协议Protocol
- 黑马程序员_OC基础13_协议protocol
- 黑马程序员——IOS基础——Protocol协议
- 黑马程序员——OC语言Protocol(协议)
- 黑马程序员——OC语言的protocol协议
- 黑马程序员-⑧bolck类型和协议protocol的用法
- 【黑马程序员】---ARC、block类型和protocol协议总结
- 黑马程序员——OC—block和protocol协议
- 黑马程序员——OC语言中的协议protocol
- 黑马程序员_arc编译特性和block数据类型,protocol协议
- 贪心算法基本概念与活动选择问题的求解
- linux上 php升级
- Hibernate的关联关系中lazy和fetch的设置
- Android开发--获取本地ip(wifi 3g)
- 【ELK初探】-Centos6.7下实战配置篇_1
- 黑马程序员 protocol协议基本知识
- JS跟java交互,找不到java中定义的方法
- Java中流的分割
- AndroidStudio的alt+enter 没有效果 没有解决方案提示
- 《Web前端开发修炼之道》笔记三:高质量CSS(二)
- maven settings.xml配置文件详解
- Mark Man马克鳗
- 观察者模式
- Linux内核IP Queue机制的分析(二)——用户态处理并回传数据包