美文网首页iOS学习笔记
代理、block传值、变量传递

代理、block传值、变量传递

作者: LPL_d5fc | 来源:发表于2019-12-12 15:07 被阅读0次

传值可以使用通知、代理、block

场景:ViewController通过点击屏幕modal跳转到ModalViewController,然后在ModalViewController中点击屏幕,将一个字符串传给ViewController中(逆传)

代理传值

思路:

1.首先思考参数要从哪个控制器传出,由哪个控制器接收参数。确定后,在传参数的控制器中自定义协议,协议方法,并且设置代理属性(遵守自定义的协议)。

2.在需要传参数的方法中调用代理方法,传参,调用之前判断一下代理是否实现了代理方法。

3.想要代理方法生效,就要将接收参数的控制器设置为传出参数的控制器的代理。一般是在界面跳转的时候设置代理。设置代理后,代理方法才会被执行。设置代理后,要遵守协议,并实现代理方法,接收参数。

block传值

block传值要比代理简洁很多。

思路:

1.在传出参数的控制器创建block代码块属性。

2.在要传参数的方法中直接调用block,将参数传入即可。

3.在接收参数的控制器中,想在哪里获取接收到的参数,就利用传参的控制器的引用调用定义好的block,接收参数。

写到这里发现block传值比起代理传值,要简便了许多。

变量传递

如果是局部变量,block是值传递(图1、图2),接收变量后,再更改局部变量的数值,输出不会改变

如果是静态变量,全局变量,__block修饰的变量,block都是指针传递(按照图二的修改方式,就可以改变打印出a的值)

图1 图2

相关文章

  • 代理、block传值、变量传递

    传值可以使用通知、代理、block 场景:ViewController通过点击屏幕modal跳转到ModalVie...

  • iOS深入传值

    传统的代理和block传值一般都是单层传递,想要深入的传递值,一般做法就是通过通知跨类传递。代理、block要想深...

  • 笔记:iOS Block的基本使用

    目录 Block概述 Block定义方式 Block保存代码 Block传值 Block对外部变量的传递 Bloc...

  • block开发使用场景

    block传值 利用block去代理代理传值 1. 代理传值 点击当前控制器Viewcontroller利用mod...

  • iOS开发-block传值

    block传值步骤比代理传值步骤简便,实际开发中经常使用到。 block传值分为block属性传值和block方法...

  • iOS 传值方式

    1,从前向后传值:属性传值 2, 从后向前传值: block、 代理、 通知 结论1, block、 代理 传值用...

  • 浅谈Block内存管理

    1. block的底层实现原理 block实际上是指向结构体的指针;block传值时:普通的局部变量是值传递,全局...

  • iOS __block修饰变量时的底层原理

    总结:为什么Block内部不能改变自动变量(就是局部变量)的值 自动变量是以值传递方式传递到Block的构造函数里...

  • block 原理总结

    block 对变量的引用: 局部变量,传递的是值,因为局部变量可能在 block 执行之前就被销毁,所以传递的是值...

  • iOS常用设计模式

    代理模式:完成委托方的任务,需要声明代理对象和指定代理,相对于block,在需要传递参数的传值时优先考虑代理。代理...

网友评论

    本文标题:代理、block传值、变量传递

    本文链接:https://www.haomeiwen.com/subject/omctnctx.html