IOS 代理模式 DELEGATE
代理模式:将我(类或结构体)需要来完成的工作交给另一个具备我所要求的能力的人(实现协议的对象)来执行
协议:具备哪些能力
例子:我要去买火车票,没时间买,委托黄牛买票
协议:买票
//: Playground - noun: a place where people can play
import UIKit
protocol BuyTicketProtocol {
// 买票的需求---实际是我需要做的事情
func buyTicket ()-> AnyObject;
}
class MyTicket{
var delegate: BuyTicketProtocol? //我不想自己去买,找个代理,只要满足了买票的需求就可以
func getTicket() -> AnyObject {
return delegate!.buyTicket()
}
}
class ZhongJie: BuyTicketProtocol {
func buyTicket() -> AnyObject {
//随便返回一个对象
return NSDate()
}
}
let myTicket = MyTicket()
myTicket.delegate = ZhongJie()
myTicket.getTicket()
更多的是在实现协议的类中为委托类(雇主)的委托对象(代理)赋值,实现方式是通过页面跳转将委托类传递到实现协议的类中,获取代理,进行赋值
IOS 代理模式 DELEGATE的更多相关文章
- QF——iOS代理模式
iOS的代理模式: A要完成某个功能,它可以自己完成,但有时出于一些原因,不方便自己完成.这时A可以委托B来帮其完成此功能,即由B代理完成.但是这个功能不是让B随随便便任其完成.此时,会有一个协议文件 ...
- iOS代理模式
iOS代理模式的简单理解:当一个对象无法直接获取到另一个对象的指针,又希望对那个变量进行一些操作时,可以使用代理模式. 代理主要由三部分组成: (1)协议:用来指定代理双方可以做什么,必须做什么. ( ...
- iOS代理模式(delegate)的使用
前言: 代理模式是iOS中非常重要的一个模式,iOS SDK中的系统控件几乎都用到了代理模式.代理模式用来处理事件监听.参数传递功能. 协议创建(Protocol): 可手打如下代码,或者在代码块里面 ...
- Swift语言精要 - 浅谈代理模式(Delegate)
在iOS编程中,我们经常谈到代理代理,也就是delegate,那么什么是代理呢? 我们来看一下cocoa对它的描述: Delegation is Cocoa’s term for passing of ...
- Objective-c 代理模式(delegate)
Objective-c 代理模式(delegate) (2012-07-31 22:04:39) 转载▼ 标签: 杂谈 分类: iOS Objective-c 代理模式(delegate) 一 ...
- iOS开发-代理模式
代理模式有的时候也被称之为委托模式,但是实际上两者是有分别的,代理模式为另一个对象提供一个替身或占位符访问这个对象,代理对象和控制访问对象属于同一类,委托对象和对象不一定属于同一类.两者都可以控制类的 ...
- iOS重一些常用的代理模式
(一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现.优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过和proto ...
- iOS:使用代理模式监听开关状态改变事件
记一次解决跨控制器监听开关状态改变的尝试. 为了统一设置UITableViewCell里的内容,自定义了UITableViewCell类的一个基类,命名为SettingCell.SettingCell ...
- iOS 层层推进实现代理模式
1.代理模式核心思想:A类委托B类做某件事,然后A类获取B类的执行的返回结果! 举例:女孩想去买电影票,但是自己不亲自去而是委托男孩了解电影电影票信息,同时女孩获得男孩买票的结果,代码模拟实现: /* ...
随机推荐
- <context-param>与<init-param>的区别与作用(转自青春乐园)(
<context-param>的作用:web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件we ...
- ThreadLocal深度解析
本文基于jdk1.8.0_66写成 0. ThreadLocal简介 ThreadLocal可以提供线程内的局部对象,合理的使用可以避免线程冲突的问题比方说SimpleDateFormat是线程不安全 ...
- [ThinkPHP] 模板输出 时间格式 Unix时间戳
{$create_time|date="y-m-d",###}
- 字典树(Trie Tree)
终于要开始更新我的ACM学习之路了,不过没想到却是因为一次Java大作业,有趣,%yuan老师. 字典树是一种很简单的树形结构,主要用来进行词频统计,在算法竞赛中有时也会碰到. 字典树的基本思路是,通 ...
- 2、Flask实战第2天:URL传参
当我们访问网站/的时候,会执行hell_world函数,并把这个函数的返回值返回给浏览器,这样浏览器就显示hello world了 @app.route('/') def hello_world(): ...
- sqlplus version
$ export ORACLE_HOME=/opt/oraClient/11.2.0.4$ $ ./sqlplus -version SQL*Plus: Release 11.2.0.4.0 Prod ...
- java读写文件及保留指定位小数
1)先上代码: public static void main(String[] args)throws IOException{ double[][] B=new double[1043][2102 ...
- Linux发布Tomcat Web项目
1.打包项目,项目右键–>Export –> WAR file 2.将.war文件放到tomcat下的webapps下.重启tomcat即可. ps afux — 查看进程 ki ...
- asp.net 域名注册查询接口 支持批量后缀查询
最近在完成公司网站www.xuhongkj.com的时候,需要用到域名查询的功能,网上查了一些资料,几乎都是ASP版的,而且功能有限,不能满足我的要求. 百度后,结合网上的例子,整理出了该功能! as ...
- Matlab中向量场的绘制
% quiver(x,y,u,v) % x,y是包含坐标位置的矩阵,而u和v则是包含偏导数的矩阵. % 例如绘制f(x,y)=y-3x-2x^2-3xy-3y^2的方法: % 先用gradient函数 ...