OC_协议代理

【协议/protocol】

———————————————————————————————————————

<1>.   协议的定义

在oc中是用来规范方法的声明,可以实现多继承或对象间通信的一种语法。

<2>.   协议的写法:

@protocol 协议名 <NSObject>

@required(缺省方法)

//遵从协议的类必须实现的方法

@optional

//遵从协议的类可选实现的方法

@end

【注】协议只有一个头文件,里面声明方法

<3>.  协议中声明的方法有两种权限:

@required:(缺省)必须的,即遵从协议的类,必须实现这个方法

@optional: 可选的,遵从协议的类,可以实现这个方法,也可以不实现。

<4>.  使用协议需要注意的问题

1.协议中只声明方法,不实现方法

2.遵从协议的类须导入协议头文件

3.协议中@required权限的方法必须实现

<5>.  遵从(conform)协议的类写法

@interface Dog : NSObject <EatProtocol, RunProtocol>

//Dog类就遵从了协议,如果遵从多个协议(多继承),协议间用逗号隔开

【注】遵从协议的类会创建出遵从协议的对象

<6>.  持有协议的id指针写法

@property (weak) id<MyDelegate> delegate;

//delegate是持有协议的id指针,只能调用协议中声明的方法

//持有协议的id指针,只能指向遵从协议的对象

=================================

【代理/delegate】

———————————————————————————————————————

<1>.   代理

//协议的重要用处,一个是规范接口,一个是实现代理.

//代理是实现两个类的对象间通信的一种机制。

【委托方】主动方 持有带协议的id指针,可以使用协议。

@property (weak) id<MyDelegate> delegate;

//代理对象不使用strong,写weak,表示不retain,和普通变量一样直接赋值

//使用weak的原因:防止内存泄露

【代理方】被动方 遵从协议,实现协议中的方法。

代理实现步骤:

第一步:制定协议

第二步:委托方 : 使用协议

第三步:代理方:实现协议

第四步:建立代理关系

<2>.  回调

//协议的另一个功能就是进行回调。

当我们需要完成某个功能模块,但不知道使用功能模块的是哪个对象,通过协议,可以规定接收数据的对象通过哪个方法获得数据,调用该方法的过程称为【回调】。

【委托方】主动方 遵从协议,实现方法。

【代理方】被动方 持有带协议的id指针,可以使用协议。

回调过程:

1、委托方注册代理方对象,调用代理方实现功能;

2、代理方通过持有协议的id指针使用协议;

3、委托方实现协议。

时间: 2024-11-08 21:13:30

OC_协议代理的相关文章

【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值

实验说明 (1)正向传值:比如A类里地值要传给B类用,就是我们先在A类中声明一个B类对象(当然B类头文件要import过来),然后把A类中得某个值传递给B类中得某个值(所以需要在B类中先准备一个变量来接受,就是用@property和@synthesize整个变量即可). (2)反向传值:比如需要把B类中的值传递给A类用.我们先在B类中写一个协议,协议里面有一个可以带参数的方法,这个参数就是我们要传递的值(这个协议也可以单独写,不一定写在B类中),然后B类遵循这个协议后,利用这个协议创建一个委托变

OC7-? 类目,延展 协议代理。

目标: **.   日期类和其他的配合使用类 ****. 类目,延展   category/extention. *****.协议代理. 1.日期类:NSDate, (1)oc中表示用的日期和时间,用的是nsdate, (2)日期在计算机中存储的是按照0时区来存储的. (3)日期类是通过存储1970年到现在的秒数,然后再计算当前时间的. 2.初始化,默认是按照0时区存储的.NSDate *date1=[NSDate dateWithTimeIntervalSinceNow:-2*60*60];

iOS开发总结——协议代理的认识

1.前言 自今年5月底正式转iOS之后,天天get新技能,很多技能在脑子里回旋不吐不快,所以,写点东西整理一下.先从协议代理开始. 2.协议方法的声明 @protocol EventMenuBarDelegate <NSObject> - (void)delegateShouldDoWhenMenuButtonTapped:(UIButton *)button; @end 以上代码意思是,利用@protocol 指令声明协议名EventMenuBarDelegate,并遵从NSObject协议

33-oc协议&amp;代理

协议基本概念 其他语言有接口的概念,接口就是一堆方法的声明没有实现. OC中没有接口的概念,OC中的接口就是协议. 协议Protocol是由一系列的方法声明组成的 书写协议的格式 格式: @protocol协议名称 <NSObject> // 方法声明列表 @end 一个类怎么遵循协议 类遵守协议格式: @interface类名 : 父类 <协议名称1, 协议名称2,…> @end 注意: 一个类可以遵守1个或多个协议 任何类只要遵守了Protocol,就相当于拥有了Protoco

TCP/IP和HTTP协议代理

TCP/IP协议族 TCP/IP(传输控制协议/网际协议)是用于计算机通信的一个协议族. TCP/IP协议族包括诸如Internet协议(IP).地址解析协议(ARP).互联网控制信息协议(ICMP).用户数据报协议(UDP).传输控制协议(TCP).路由信息协议(RIP).Telnet.简单邮件传输协议(SMTP).域名系统(DNS)等协议. 1. 应用层 应用层包含一切与应用相关的功能,我们经常使用的HTTP.FTP,Telnet.SMTP等协议都在这一层实现. 2. 传输层 传输层负责提供

OC_协议与分类的学习

eg: XYPoint声明文件 #import <Foundation/Foundation.h> @interface XYPoint : NSObject { int x; int y; } -(void)print; -(void)setX:(int)_x andY:(int)_y; @end XYPoint实现文件 #import "XYPoint.h" @implementation XYPoint -(void)print { NSLog(@"%d %

委托,协议(代理模式)

1.delegate 传值,传事件. 1.避免子类化带来的过多的子类以及子类与父类的耦合2.通过委托传递消息机制实现分层解耦 eg. 代理 #import <Foundation/Foundation.h> @class Children; @protocol ChildrenDelegate <NSObject> @required - (void)Eat:(Children *)children; @optional //.... @end 代理对象->保姆 .h @in

协议和代理的使用步骤

*  对于协议和代理的使用步骤:(一对多 -- 一个代理对象可以座多个任务(方法)) 1.自定义协议 1.自定义协议(存放代理实现的任务, 分为可选和必须实现) 2.定义代理属性(用于代理对象, id 类型 -- 要服从协议, 语义特性 assign) 3.在其他文件中为该类设置代理(指定任务由谁来完成) 4.让代理所处的类服从协议(答应要干活) 5.代理对象实现协议中的方法(指定任务完成的细节) 6.委托方通知代理区执行协议中的方法(让代理干活) 2.无需自定义协议 1.在其他类中为该类指定代

【OC学习-22】协议和代理双剑合璧——中介找房的代理模式

(1)什么是协议 协议其实是一种接口,创建出来给类(类1)调用,而其他类(类2)可以通过这个协议可以和类1进行通信.所以说它类似于一种接口,实现类和类之间的互动. (2)创建协议 通过New File >>> Objective-C protocol创建.只生成一个.h文件.在这个.h文件里面写方法,分两种@required和@optional,一个是必须实现的方法,另一个是可选实现的方法,默认是required,这种分类方法类似于实例变量的分类. #import <Foundat