iOS代理模式(delegate)的使用】的更多相关文章

代理模式:将我(类或结构体)需要来完成的工作交给另一个具备我所要求的能力的人(实现协议的对象)来执行 协议:具备哪些能力 例子:我要去买火车票,没时间买,委托黄牛买票 协议:买票 //: Playground - noun: a place where people can play import UIKit protocol BuyTicketProtocol { // 买票的需求---实际是我需要做的事情 func buyTicket ()-> AnyObject; } class MyTi…
iOS的代理模式: A要完成某个功能,它可以自己完成,但有时出于一些原因,不方便自己完成.这时A可以委托B来帮其完成此功能,即由B代理完成.但是这个功能不是让B随随便便任其完成.此时,会有一个协议文件,里面定义了完成该功能的方法规范.B得实现这个协议,严格按照协议里定的规范完成.这就是iOS代理模式的基本思想. 步骤: <1>定义一个协议:@protocal .里面只声明方法,确定了该方法的规范(返回值和参数等) <2>给A添加代理属性.代理的类型必须是id<xxx>…
iOS代理模式的简单理解:当一个对象无法直接获取到另一个对象的指针,又希望对那个变量进行一些操作时,可以使用代理模式. 代理主要由三部分组成: (1)协议:用来指定代理双方可以做什么,必须做什么. (2)代理:根据指定的协议,完成委托方需要实现的功能. (3)委托:根据指定的协议,指定代理去完成什么功能.   代理使用步骤 1.申明一个协议  (这个写在需要被获取的对象里面,也可以单独写一个类) @protocol TextDelegate -(void)deliverFirsttext:(NS…
前言: 代理模式是iOS中非常重要的一个模式,iOS SDK中的系统控件几乎都用到了代理模式.代理模式用来处理事件监听.参数传递功能. 协议创建(Protocol): 可手打如下代码,或者在代码块里面搜索"protocol",然后把协议的代码拖拽出来 @protocol FullcellDalegate <NSObject> @required//遵守协议必须实现的方法 -(void)fullcellSelect:(NSIndexPath *)index WithBtnTy…
在iOS编程中,我们经常谈到代理代理,也就是delegate,那么什么是代理呢? 我们来看一下cocoa对它的描述: Delegation is Cocoa’s term for passing off some responsibilities of an object to another 顾名思义: 代理是把职责从一个对象传到另一个对象. 其实,如果编写过Java或者C#程序的朋友应该知道,我们在设计的时候经常使用到接口和组合,道理是一样的. 看一下下面的代码: 首先,我们定义一个协议 p…
Objective-c 代理模式(delegate) (2012-07-31 22:04:39) 转载▼ 标签: 杂谈 分类: iOS Objective-c 代理模式(delegate)     一.什么事代理模式?         代理模式是在oc中经常遇到的一种设计模式,那什么叫做代理模式呢? 举个例子:有一个婴儿,他本身不会自己吃饭和洗澡等等一些事情,于是婴儿就请了一个保姆,于是婴儿和保姆之间商定了一个协议,协议中写明了保姆需要做什么事情, 而保姆就是这个代理人,  即:婴儿和保姆之间有…
代理模式有的时候也被称之为委托模式,但是实际上两者是有分别的,代理模式为另一个对象提供一个替身或占位符访问这个对象,代理对象和控制访问对象属于同一类,委托对象和对象不一定属于同一类.两者都可以控制类的访问,访问代理的方法A也就意味着访问对象的方法A,访问委托对象方法A执行的是可以是对象的方法B.从实际开发的角度看,委托属于代理模式的扩大版,并没有那么多的限制. 基础知识 代理模式相对比较简单,可以简单的看一下UML类图: 代理模式以便管理客户对对象的访问,管理访问的方式有很多种.远程代理管理客户…
(一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现.优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求.列表row个数delegate自定义的delegate (二)观察者模式应用场景:一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息.优势:解耦合敏捷原则:接口隔离原则,开放-封闭原则实例:Notification通知中心,…
记一次解决跨控制器监听开关状态改变的尝试. 为了统一设置UITableViewCell里的内容,自定义了UITableViewCell类的一个基类,命名为SettingCell.SettingCell里显示的内容由数据模型SettingItem提供:在SettingCell里定义一个属性即可. @property (nonatomic, strong) SettingItem *item; 再定义几个SettingItem的子类表示显示不同内容的Cell(如图1).由于所有开关状态的归档和解档都…
1.代理模式核心思想:A类委托B类做某件事,然后A类获取B类的执行的返回结果! 举例:女孩想去买电影票,但是自己不亲自去而是委托男孩了解电影电影票信息,同时女孩获得男孩买票的结果,代码模拟实现: /*********************************** Gril.h *************************************/ #import <Foundation/Foundation.h> @class Boy; @interface Gril : NSOb…
代理模式:为其他对象创建一个代理以控制对这个对象的访问 UML解释:客户端向Proxy发起一个Request()请求,Proxy对象会把这个Request转发给Proxy对象的RealSubject.RealSubject会实施操作间接满足Subject要求.举一个生活中的例子就比较好理解了——去饭店点餐,我们就是UML中的Subject(客户端).Proxy就是饭店的服务员.RealSubject就是厨师.我们不能直接向厨师点餐,我们把点餐(Request())请求发送给服务员(Proxy).…
动态代理模式的应用很多,特别是在不能修改被代理类的前提下,要对执行某些方法时需要打log或者捕捉异常等处理时,是一个非常方便的方法.只需要少量修改客户端(场景类)代码和添加一个代理类就可以实现,这个符合Open-Close Principle. 在Java和.Net中的AOP也是利用了这种代理模式的实现. iOS实现的代码如下: 首先,定义一个接口, @protocol DPDynamicProtocol <NSObject> @required - (void)doSomething; -…
  处理文本输入框的输入事件,单击文本输入框后要弹出键盘. 弹出键盘有两种实现方式:一种代理,一种通知.也就是对应的(观察者模式和代理模式).   1.通知 1.1.准备工作 每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信. 任何一个对象都可以向通知中心发布通知(NSNotification),描述自己在做什么. 其他感兴趣的对象(Observer)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知.  …
******* HMViewController.h #import "HMViewController.h" #import "HMTg.h" #import "HMTgCell.h" #import "HMTgFooterView.h" @interface HMViewController () <HMTgFooterViewDelegate> @property (nonatomic, strong) NS…
代理模式 基本理解 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 代理模式的应用 远程代理:就是为一个对象在不同的地址空间提供据不代表.这样可以隐藏一个对象存在于不同地址空间的事实. 虚拟代理:是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象. 安全代理:用来控制真实对象访问时的权限. *智能指引:是指当调用真实的对象时,代理处理另外一些事. 例子 ChildViewCongroller.h // // ChildViewController.h…
*********用户登录,回车的监听(代理模式UITextFieldDelegate) #import "HMViewController.h" @interface HMViewController () <UITextFieldDelegate> @property (weak, nonatomic) IBOutlet UITextField *userNameText; @property (weak, nonatomic) IBOutlet UITextField…
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective-C中的delegate大部分用法属于委托模式.全文有些抠概念,对实际开发没有任何影响. 前段时间看到的一篇博客iOS开发——从一道题看Delegate,和这篇博客iOS APP 架构漫谈解决的问题类似.两篇blog都写得很不错,都是为了解决两个页面之间的数据传递问题: A页面中有一个UILabel…
在项目中我们经常会用到代理的设计模式,这是iOS中一种消息传递的方式,也可以通过这种方式来传递一些参数.这篇文章会涵盖代理的使用技巧和原理,以及代理的内存管理等方面的知识.我会通过这些方面的知识,带大家真正领略代理的奥妙. iOS中消息传递方式 在iOS中有很多种消息传递方式,这里先简单介绍一下各种消息传递方式. 通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式. 代理:是一种通用的设计模式,iOS中对代理支持的很好,由代理对象.委托者.协议三部分组成. block:…
OC中的协议(Protocol)和和.NET中的接口(Interface)类似,简单来讲,就是一系列方法的列表,其中声明的方法可以被任何类实现.不同的是,在.NET中,如果某个类实现了一个接口,就必须实现这个接口中声明的所有方法:但在OC中,可以不实现协议中声明的所有方法,需要用到某些功能,就去实现对应的方法即可. 这种模式一般称为代理模式.在iOS和OS X开发中,Apple采用了大量的代理模式来实现MVC中View(UI控件)和Controller(控制器)的解耦. 监听思想:如果想让某个对…
在前一篇文章我们介绍了OC中的协议的概念,这篇文章我们就来介绍一下OC中的代理模式,关于代理模式,如果还有同学不太清楚的话,就自己去补充知识了,这里就不做介绍了,这里只介绍OC中是如何实现代理模式的. 这里举一个简单的例子: 小孩类,护士类,保姆类,其中小孩类有两个方法:wash和play 这里代理对象就是:护士类.保姆类,小孩类是被代理对象. 看一下代码: 首先看一下小孩类: Children.h // // Children.h // 12_DesignStyle // // Created…
转自:http://www.cocoachina.com/ios/20160317/15696.html 在项目中我们经常会用到代理的设计模式,这是iOS中一种消息传递的方式,也可以通过这种方式来传递一些参数.这篇文章会涵盖代理的使用技巧和原理,以及代理的内存管理等方面的知识.我会通过这些方面的知识,带大家真正领略代理的奥妙.写的有点多,但都是干货,我能写下去,不知道你有没有耐心看下去.本人能力有限,如果文章中有什么问题或没有讲到的点,请帮忙指出,十分感谢! iOS中消息传递方式 在iOS中有很…
ios中关于delegate(委托)的使用心得 分类: iOS开发2012-05-15 10:54 34793人阅读 评论(9) 收藏 举报 iosuiviewtimerinterfaceprinting设计模式 从开始从事OC工作到现在大概1年多了,从当初接触oc的"协议"的不明白,到现在代码中随处可见的委托,协议,其中感悟颇多.   首先,大家应该都明白的是委托是协议的一种,顾名思义,就是委托他人帮自己去做什么事.也就是当自己做什么事情不方便的时候,就可以建立一个委托,这样就可以委…
IOS 如何选择delegate.notification.KVO? 博客分类: IOS   前面分别讲了delegate.notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在网上看到一个博客上详细的分析了三者之间的区别以及各自的优势,博文地址为http://blog.shinetech.com/2011/06/14/delegation-notification-and-observation/,因…
OC中的代理模式,关于代理模式,如果还有同学不太清楚的话,就自己去补充知识了,这里就不做介绍了,这里只介绍OC中是如何实现代理模式的.这里举一个简单的例子:小孩类,护士类,保姆类,其中小孩类有两个方法:wash和play这里代理对象就是:护士类.保姆类,小孩类是被代理对象.看一下代码:首先看一下小孩类:Children.h[objc]  view plaincopy 1. //   2. //  Children.h   3. //  12_DesignStyle   4. //   5. //…
何实现代理模式的. 这里举一个简单的例子: 小孩类,护士类,保姆类,其中小孩类有两个方法:wash和play 这里代理对象就是:护士类.保姆类,小孩类是被代理对象. 看一下代码: 首先看一下小孩类: Children.h // //  Children.h //  12_DesignStyle // //  Created by jiangwei on 14-10-11. //  Copyright (c) 2014年 jiangwei. All rights reserved. // #imp…
Objective-C的协议和代理是运用最多的特性之一,可以说在苹果系列开发中无处不在.事实上很多人都不知道其背后的原理.事实上简单点说,这就是设计模式中的代理模式的经典运用.代理模式简单点说就是为其他对象提供一种代理以控制对这个对象的访问,而在OC当中形象点说就是如果A完成一件事,但是自己不能完成,于是他找个代理人B 替他完成这个事情,他们之间便有个协议 (protocol),B继承该协议来完成A代理给他的事情. 举个例子:有一个婴儿,他本身不会自己吃饭和洗澡等等一些事情,于是婴儿就请了一个保…
我们知道Google早就被墙了,所以FQ才能访问Google呢,这个“FQ”的过程就是一个代理的过程.“代理模式”在之前的博客中不止一次的提及过,之前的委托回调就是代理模式的具体应用.今天我们就从“FQ”中来认识一下代理模式.代理模式的定义如下: 代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问. 首先说一下什么是“代理”吧,其实代理很好理解,你就把“代理”看成是二道贩子,说的好听点叫代理商.就是你买个东西,不从生产地直接买,而是通过二道贩子,三道贩子来进行购买,这些商贩就是代理…
我个人更喜欢把委托(Delegate)模式称为代理(Proxy)模式.还是那句话,第一次接触代理模式是在Java中接触的,在Java中实现代理模式和接口是少不了的.当时学习Spring的时候用到了接口回调,其实就是实现的委托代理模式.简单的说代理就是把相应的功能交给实现接口的相应的类中来解决.在OC中没有接口该如何实现代理呢?前面的博客中笔者说提了一句,在OC中的协议和Java中的接口极为相似,都是只声明方法而不去实现,方法的实现在OC中交个遵循协议的类,而在Java中方法的实现交给实现接口的类…
原文地址:http://chengduyi.com/blog/?post=27 在游戏设计中,通常会将一些实现了具体功能的模块进行封装,达到重用的目的.这些功能模块包括:1.网络通信模块(实现连接,断开,消息发送.接收,错误等处理):2.资源加载管理模块(实现资源加载,缓存,进度通知,分类型加载.管理等). 设计实现这些功能模块的方法很多,设计过程中最好做到使这些模块在外部启动简单.使用方便.重用容易. 我在设计中使用了代理模式的思想,就是将封装的功能留出一个代理类供外部继承实现.使用时候的具体…
之前已经写过一个个人关于代理模式的一些看法,现在就来总结一下使用代理模式的步骤吧. 1.先搞清楚谁是谁的代理(delegate) ● 2.定义代理协议,协议名称的命名规范:控件类名 + Delegate ● 3.定义代理方法 Ø代理方法一般都定义为@optional Ø代理方法名都以控件名开头 Ø代理方法至少有1个参数,将控件本身传递出去 Ø 4.设置代理(delegate)对象  (比如myView.delegate = xxxx;) Ø代理对象遵守协议 Ø代理对象实现协议里面该实现的方法 Ø…