iOS开发——使用delegate进行消息传递

本文详细介绍了iOS开发中如何使用delegate进行消息传递,强调了delegate作为代理设计模式的作用,降低了类之间的耦合度。文章通过实例展示了delegate的创建、使用步骤,并对比了基于storyboard和nib文件的不同之处,最后分享了相关参考资料和代码仓库。
摘要由CSDN通过智能技术生成

        iOS开发中,界面之间传递消息或者数据是最基本的一种需求,我们可以使用很多方法来实现这种需求,比如在头文件中暴露一个属性、比如使用notification(一对多的消息传递)等等。今天我们要来介绍另一种方式:使用delegate传递消息(一对一的消息传递)。

       delegate称为委托,同时也是一种代理设计模式。使用委托避免了类与类的耦合度过高。利用委托赋值更加安全可控,委托赋值在不暴露自己类的属性的前提下就可以对自己进行赋值。

       在iOS中委托通过协议@protocol来实现,在协议中所声明的方法,不需要在协议中有实现的方法,是由它的实现类来实现(该类需要在头文件中包含<协议名>)。“协议”和“委托”是两个不一样的概念,因为我们在看代码的时候总是会看到他们出现在一起。但不能说,delegate就是protocol,delegate是一种架构模式。举个例子什么是“委托”:比如我在开车,但是开车不能看短信,所以我就叫车里的朋友帮我看短信,这样我就可以正常的开车了。当朋友看完短信内容后,就告诉我是什么内容。这就是委托,朋友就是我的委托对象。“协议”protocol是用来定义对象的属性和行为,类似于C++中的虚函数。其中有两个关键字@required和@optional,前者表示必须要实现的方法,后者是可选的方法。

       使用delegate常用在两种情况下:

*两个类之间的传值,类A调用类B的方法,类B在执行过程中遇到问题通知类A;

*控制器(ViewController)与控制器(ViewController)之间的传值,从A跳转到B,再从B返回到A时需要通知A更新UI或者是做其他的事情,这时候就用到了代理(delegate)传值。

tips:如果没有在@protocol中显式的写上@required或者@optional,那么默认就是@required(必需的)的。为了不引起歧义,最好显式的写上@required或@optional。

       通常一个delegate的使用过程需要经过5步:

(1)创建一个delegate;

(2)委托者声明一个delegate;

(3)委托者调用delegate内的方法(method);

(4)被委托者设置delegate,以便被委托者调用;

(5)被委托者实现delegate所定义的方法;  

下面我通过1个实例来演示使用delegate传递数据,代码上传至:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值