IOS-代理模式

代理设计模式的作用:

1.A对象监听B对象的一些行为,A成为B的代理

2.B对象想告诉A对象一些事情,A成为B的代理

代理设计模式的总结:

如果你想监听别人的一些行为,那么你就要成为别人的代理

如果你想告诉别人一些事情,那么就让别人成为你的代理

代理设计模式的开发步骤

1.拟一份协议(协议名字的格式:控件名 + Delegate),在协议里面声明一些代理方法(一般代理方法都是@optional)

2.声明一个代理属性:@property (nonatomic, weak) id<代理协议> delegate;

3.在内部发生某些行为时,调用代理对应的代理方法,通知代理内部发生什么事

4.设置代理:xxx.delegate = yyy;

5.yyy对象遵守协议,实现代理方法

示例程序:

程序结构如下,控制器将作为footer类的代理,并且实现代理类中的方法,在footer类中判断控制器有没有实现代理类中的方法,如果有就会调用控制器中的代理方法。

1.控制器和footer类的关系图如下:

2.在footer类的头文件中,

先声明好LYLoadMoreFooterDelegate代理,可以认为就是一个提供方法的接口,<NSobject>表示支持任何对象,@optional表示下面的方法实现方式为非强制。然后声明一个代理对象delegate,这个对象要求为实现了<LYLoadMoreFooterDelegate>协议(接口)的对象(就是下面的控制器对象,不管是谁作为被赋值为这个对象都必须实现了代理或者说接口的方法)。

3.在footer类的.m文件中,

在需要调用代理类的代理方法的地方,首先判断下代理类是否真的实现了需要调用的代理方法,如果有实现就调用。

4.在控制器.m文件中,

首先要实现 LYLoadMoreFooterDelegate 这个(代理/接口)。

然后在首次加载的方法中,实例化出footer类,并且给footer类的delegate对象赋值为self,表示自己成为footer对象的代理,下面的方法正是成为代理后要实现的方法。

时间: 2024-11-04 18:08:16

IOS-代理模式的相关文章

iOS代理模式

iOS代理模式的简单理解:当一个对象无法直接获取到另一个对象的指针,又希望对那个变量进行一些操作时,可以使用代理模式. 代理主要由三部分组成: (1)协议:用来指定代理双方可以做什么,必须做什么. (2)代理:根据指定的协议,完成委托方需要实现的功能. (3)委托:根据指定的协议,指定代理去完成什么功能. 代理使用步骤 1.申明一个协议  (这个写在需要被获取的对象里面,也可以单独写一个类) @protocol TextDelegate -(void)deliverFirsttext:(NSSt

iOS代理模式设置方法

代理模式通常用于解决类似这样的问题:我们通过界面A打开了界面B,但在应用进行的过程中,界面B有时候也需要和A主动联络,比如点击某个按钮时.一个比较好的办法是,让A成为B的代理,这样B就可以在需要的时候给A发送消息了. 代理模式的一个好处是,B实际上不需要了解A的任何事情,只要知道A是自己的代理就可以了.在这种模式下,B依然独立与A,实现了松耦合. 对象A是对象B的代理,对象B需要向A发送消息,设置方法分四步: 1.在对象B的.h中定义一个protocol代理协议,并声明一个协议的属性变量 2.让

IOS 代理模式 DELEGATE

代理模式:将我(类或结构体)需要来完成的工作交给另一个具备我所要求的能力的人(实现协议的对象)来执行 协议:具备哪些能力 例子:我要去买火车票,没时间买,委托黄牛买票 协议:买票 //: Playground - noun: a place where people can play import UIKit protocol BuyTicketProtocol { // 买票的需求---实际是我需要做的事情 func buyTicket ()-> AnyObject; } class MyTi

ios代理模式-(ViewControler之间传值)

1,新建Single View Application工程,新建SecondViewController 2,在SecondViewController中设置代理 #import <UIKit/UIKit.h> @protocol secondViewControllerDelegate <NSObject> - (NSString *)value; @end @interface SecondViewController : UIViewController @property

iOS开发-代理模式

代理模式有的时候也被称之为委托模式,但是实际上两者是有分别的,代理模式为另一个对象提供一个替身或占位符访问这个对象,代理对象和控制访问对象属于同一类,委托对象和对象不一定属于同一类.两者都可以控制类的访问,访问代理的方法A也就意味着访问对象的方法A,访问委托对象方法A执行的是可以是对象的方法B.从实际开发的角度看,委托属于代理模式的扩大版,并没有那么多的限制. 基础知识 代理模式相对比较简单,可以简单的看一下UML类图: 代理模式以便管理客户对对象的访问,管理访问的方式有很多种.远程代理管理客户

iOS中的自定义代理模式

iOS中的自定义代理模式 自定义代理模式分为6步,遵循这6步,就能把代理完整的实现. 1.定义协议(协议中存放代理的任务).我们对于有的自定义的布局视图,并不会带有协议,为了满足我们有时候的开发需求,需要添加代理.那么我们就要先定义一个协议.如下:在自定义视图的DelegateView.h文件中定义一个DelegateViewDelegate协议,协议默认的都是必须的实现的方法,可以根据需求来添加可选实现的方法. 1.定义协议 2.定义代理属性,用来存储代理对象. 2.定义代理属性 3.为Del

软件开发常用设计模式—iOS 中的代理模式总结

比如现在有一个人,想要买一张电影票,但是她很忙碌,没时间去买,那怎么办呢?只能说委托给另一个人去买. 此时,需要 person 给 other 发送消息,通知 other 去给她买电影票,而 other 也要反馈消息给 person,此时 other 就是一个代理人,person 委托代理人去办事情(买票).代理人是给委托人代办一些事情的人.具体代理人怎么做的这些事情,委托人不管,委托人只看反馈. 先看代理设计模式的基本原理 #import <Foundation/Foundation.h>

蓝懿IOS委托模式代理模式

今天刘国斌老师讲了有关oc语言里的委托模式(代理模式),通过了一个打地鼠的游戏讲解了委托模式的功能作用,之后连带讲解了协议的书写和使用. 打地鼠功能包括屏幕随机出现地鼠,点击消失,如果不点击5秒后自动消失,屏幕右上角有一个label显示点击的数量:编写思维是,首先在文件里粗昂见一个类,在类里重写init方法,加上每.5秒出现的事件,倒入viewcontroler文件,在地鼠类里声明一个属性delegate,在button点击事件加上创建对象点delegate调用viewcontroler里的加分

IOS第五天(2:用户登录,回车的监听(代理模式UITextFieldDelegate)) 和关闭键盘

*********用户登录,回车的监听(代理模式UITextFieldDelegate) #import "HMViewController.h" @interface HMViewController () <UITextFieldDelegate> @property (weak, nonatomic) IBOutlet UITextField *userNameText; @property (weak, nonatomic) IBOutlet UITextField

iOS开发:使用代理模式监听开关状态改变事件

记一次解决跨控制器监听开关状态改变的尝试. 为了统一设置UITableViewCell里的内容,自定义了UITableViewCell类的一个基类,命名为SettingCell.SettingCell里显示的内容由数据模型SettingItem提供:在SettingCell里定义一个属性即可. @property (nonatomic, strong) SettingItem *item; 再定义几个SettingItem的子类表示显示不同内容的Cell(如图1).由于所有开关状态的归档和解档都