理解委托代理

原文链接:http://www.mamicode.com/info-detail-1090443.html

很多Object-c自带的类中都设置了代理属性。

如果需要使用这些类有时就需要实现这些方法。

上面链接中解释了使用委托代理实现页面传值的原理,我是这样理解的:

1、我们可以把第二个页面中的代码看作UItextField类(B类),我们在B中声明了一个协议,和一个方法名(这个方法我们会在使用它的类中根据需求去实现):

@protocol myDelegete <NSObject>

- (void)sendMessage:(NSString*)message;

@end

2、声明了一个id类型的名为delegate属性,格式如下:

@property (nonatomic , assign)id<myDelegete> delegate;

3、因为是要把B类对象的数据传到A类,所以我们还需要实现一个赋值操作:

1 - (void)leftButtonAction:(UIBarButtonItem *)sender{
2     [self.navigationController popViewControllerAnimated:YES];
3     //代理传值第六步:把B页面的一个text内的值作为参数传出去,后面会提到。
4     [self.delegate sendMessage:self.secondView.textField.text];
5 }

综上所述:声明协议、创建一个delegate(类似C指针的参数delegate,作为两个类之间传递信息的桥梁)、赋值。这三部是B需要做的事。

虾面介绍A需要做的:

1、首先是表忠心、A会遵守这个协议,因此需要先声明自己会遵守:

@interface RootViewController : UIViewController <myDelegete>

2、表完了忠心,就得落实,也就是实现代理方法:“我答应会做,但是具体怎么做,得听我的。”

1 - (void)sendMessage:(NSString *)message{
2     self.rootView.textField.text = message;
3 }

3、是时候拉出来练练了,设置好代理,剩下的顺其自然吧:

1 - (void)rightButtonAction:(UIBarButtonItem *)sender{
2     SecondViewController *secondVC = [[SecondViewController alloc]init];
3     secondVC.sendMessage = self.rootView.textField.text;
4     [self.navigationController pushViewController:secondVC animated:YES];
5     //代理传值第四步
6     secondVC.delegate = self;
7 }
时间: 2024-10-10 03:09:57

理解委托代理的相关文章

理解JavaScript中的事件路由冒泡过程及委托代理机制

当我用纯CSS实现这个以后.我开始用JavaScript和样式类来完善功能. 然后,我有一些想法,我想使用Delegated Events (事件委托)但是我不想有任何依赖,插入任何库,包括jQuery.我需要自己实现事件委托了. 我们先来看看事件委托到底是什么?他们是怎么工作的,怎么去实现这种机制. 好,它解决了什么问题? 我们先看个简单的例子. 先假设我们有一组按钮,我一次点击一个按钮,然后我希望被点中的状态设为"active".再次点击时取消active. 然后,我们可以写一些H

窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

协议与委托代理回调在之前的博客中也是经常提到和用到的在<Objective-C中的委托(代理)模式>和<iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流>等博客内容中都用到的Delegate回调.说到协议,在Objective-C中也是有协议的,并且Swift中的协议和Objc中的协议使用起来也是大同小异的,在Java等现代面向对象编程语言中有接口(Interface)的概念,其实和Swift中或者Objc中的Protoco

iOS开发 kvc kvo 委托代理 协议 通知 简述 和使用场景

kvc: 简单来说, 是存取类属性, 通过字符串来访问对象属性. 1.只针对类属性,设置键值对 2.设置setValue: forKey:,即forKey只能为类属性 3.取值valueForKey kvo: 通过kvc 的方式修改被观察者的属性时,主动通知观察者. 1.利用KVC对类属性进行设置 2.注册observing对象addObserver:forKeyPath:options:context: 3.观察者类必须重写方法 observeValueForKeyPath:ofObject:

iOS 浅谈对MVC、传值、和沙盒机制的理解

1.简述你对MVC的理解? MVC是一种架构设计,它考虑了三种对象:Model(模型对象).View(试图对象).Controller(试图控制器) (1)模型:负责存储.定义.操作数据 (2)视图:用来展示数据给用户和用户进行操作交互 (3)控制器是M与V的协调者,控制器获取数据,将数据交给视图去展示 2.简单描述Controllers之间的传值方式有哪几种? (1)属性传值 (2)block传值 (3)代理传值 (4)单例传值 (5)通知传值:谁要监听值得变化,谁就注册通知 3.如何理解iO

ios---&gt;OC中Protocol理解及在代理模式中的使用

OC中Protocol理解及在代理模式中的使用 Protocol基本概念 Protocol翻译过来, 叫做"协议",其作用就是用来声明一些方法: Protocol(协议)的作用 定义一套公用的接口(Public) @required:必须实现的方法,默认在@protocol里的方法都要求实现. @optional:可选实现的方法(可以全部都不实现) 委托代理(Delegate)传值 它本身是一个设计模式,它的意思是委托别人去做某事. 比如:两个类之间的传值,类A调用类B的方法,类B在执

Python——深入理解urllib、urllib2及requests(requests不建议使用?)

深入理解urllib.urllib2及requests            python Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议[1] .Python语法简洁而清晰,具有丰富和强大的类库. urllib and urllib2 区别 urllib和urllib2模块都做与请求URL相关的操作,但

关于SVM数学细节逻辑的个人理解(三) :SMO算法理解

第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法. SMO算法就是帮助我们求解: s.t.   这个优化问题的. 虽然这个优化问题只剩下了α这一个变量,但是别忘了α是一个向量,有m个αi等着我们去优化,所以还是很麻烦,所以大神提出了SMO算法来解决这个优化问题. 关于SMO最好的资料还是论文<Sequential Minimal Optimization A Fast Algorithm for Training Support Vector

2.2 logistic回归损失函数(非常重要,深入理解)

上一节当中,为了能够训练logistic回归模型的参数w和b,需要定义一个成本函数 使用logistic回归训练的成本函数 为了让模型通过学习来调整参数,要给出一个含有m和训练样本的训练集 很自然的,希望通过训练集找到参数w和b,来得到自己得输出 对训练集当中的值进行预测,将他写成y^(I)我们希望他会接近于训练集当中的y^(i)的数值 现在来看一下损失函数或者叫做误差函数 他们可以用来衡量算法的运行情况 可以定义损失函数为y^和y的差,或者他们差的平方的一半,结果表明你可能这样做,但是实际当中

理解信息管理系统

1.信息与数据的区别是什么? 数据是记录客观事物,可鉴别的符号,而信息是具有关联性和目的性的结构化,组织化的数据.数据经过处理仍是数据,而信息经过加工可以形成知识.处理数据是为了便于更好的解释,只有经过解释,数据才有意义,才可以成为信息.可以说信息是经过加工以后,对客观世界产生影响的数据. 2.信息与知识的区别是什么? 信息是具有关联性和目的性的结构化,组织化的数据,知识是对信息的进一步加工和应用,是对事物内在规律和原理的认识.信息经过加工可以形成知识. 3.举一个同一主题不同级别的数据.信息.