美文网首页iOS技巧学习_JM开发技巧分类iOS Developer
iOS 奇淫技巧之<多代理,多block传值>

iOS 奇淫技巧之<多代理,多block传值>

作者: 来自蒙塔基的钢蛋儿 | 来源:发表于2016-04-06 18:04 被阅读2689次

    <原创>
    由于某种需求,我们的项目中要使用到,一对多的传值.第一反应当然是,消息通知了.但是 个人感觉 太low.
    所以 想到 以前用XMPP写即时通讯时,大神的SDK里,代理是可以一对多的,所以我追寻神的脚步,也就有了这篇blog.
    消息通知,代理,以及block.这三中方式,优缺点我不做评价.有经验的人会根据业务需求去选择适合自己的方式.

    1.效果演示: 把输入框里面的 文本 通过 多代理 给每一个 cell 的label 赋值.
    delegate->前缀;
    是通过多代理方式赋值.
    block->前缀;
    是通过多block 方式赋值.
    然后跳转到另一个控制器 把另一个文本的 文字,传给其他 接受多代理,以及多block 的对象当中.也就是给首界面的 cell 赋值....


    duodaili2.gif

    2.API:只有代理 实现协议,delegate. 以及多代理时 使用的监听,与移除监听方法.


    duodaili3.png

    3.设置 代理


    duodaili4.png

    4.代理对象 签订协议(当然你不签订也可以,程序员无视警告!)


    duodaili5.png

    5.分别 实现协议方法,以及在初始化方法中,调用 block 监听方法.
    在 dealloc 时移除 block 监听


    duodaili6.png

    6.通过单例来触发事件.把输入框当中的文本传递给 delegate 以及block中


    duodaili7.png

    7.设置代理时,要保存 每一个delegate 对象,这里要注意,保存代理 为了防止容器当中的对象被 retain ,导致对象不释放.要采用
    NSPointerArray
    来做容器,弱引delegate 对象


    duodaili8.png

    8.多block.m实现 将block 做为value 存入字典当中.delegate对象通过hash转成 NSString 当做Key 缓存起来,当对象释放的时候可以再次调用

    • (void)removeObserver:(id)delegate;
      从缓存当中移除 键值对.


      duodaili9.png

    附上Demo下载地址:
    https://github.com/yangyangFeng/iOS-More-delegate

    好了以上就是 iOS 实战开发当中 的 多代理,以及多block 传值.
    其实好处很多,比如我在购物车当中 使用 多代理,不用每次 +-数量的时候来刷新 tableView ,或者用消息通知来通知每一个 cell 来更新数据.逼格太low.
    励志成为一名写出高逼格代码的程序员的我,是不允许这么做的!!!

    本次装13,到此结束!
    转载请注明出处,喜欢请给我个星,鼓励我继续研究奇淫技巧.!

    如果有新的好点子,改进欢迎指正.交流技术,分享装13技巧.

    相关文章

      网友评论

        本文标题:iOS 奇淫技巧之<多代理,多block传值>

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