美文网首页
iOS • 记——代理传值和Block传值的简单对比

iOS • 记——代理传值和Block传值的简单对比

作者: 行走的苹果哥 | 来源:发表于2016-12-15 16:25 被阅读168次

    在iOS开发中,两个界面之间的传值是开发中经常会用到,给需要传值的对象,直接定义属性就能传值。传值分为两种,顺传和逆传,今天主要是分享逆向传值中,使用代理和block的一些对比。

    接下来我们通过一个简单的例子来看看,打开xcode,新建一个project,我们创建两个控制器,在第一个控制器中添加一个label,设置数字为456,我们通过第二个控制器的传值来改变第一个控制器的label的数字,效果如下所示:

    1.gif

    代理传值

    打开xcode,创建一个新的project,创建两个控制器,如图所示:

    Paste_Image.png

    我们在ModalViewController.h中设计代理方法:

    Paste_Image.png

    我们为了给两个界面做区别,在ModalViewController中,设置一下它的背景颜色,使用touchBegan方法,通过modal的跳转方式来实现传值,如下图所示:

    Paste_Image.png

    接着,我们回到第一个控制器,创建label,设置label的数字为456,遵守我们刚刚的代理,然后依然使用touchBegan方法,调用代理方法:

    Paste_Image.png Paste_Image.png

    block传值

    block传值相对于代理来说,代码非常简单。如下:

    Paste_Image.png Paste_Image.png

    在第一个控制器中,我们只需要一句代码就可以实现传值:

    Paste_Image.png Paste_Image.png

    总结:传值是我们在开发中常用的技术点,block相对于代理传值来说代码量会少很多,写法也相对简单,我个人在日常开发中使用block的几率比较多,不过,不同的业务逻辑开发有不同的需求,代理传值和block传值在不同的需求中各有优势。

    相关文章

      网友评论

          本文标题:iOS • 记——代理传值和Block传值的简单对比

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