美文网首页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传值>

    <原创>由于某种需求,我们的项目中要使用到,一对多的传值.第一反应当然是,消息通知了.但是 个人感觉 太low.所...

  • Block传值

    iOS传值一共有四种:属性传值,代理传值,通知传值以及Block传值; 今天我们来说一下Block传值: 概念:带...

  • iOS 常用传值方式

    总结 iOS 日常开发中的几种常用传值方式:正向传值代理传值block传值通知传值单例 文章代码:https://...

  • block开发使用场景

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

  • ObJective-C之利用Block逆向传值

    在iOS开发之通过代理逆向传值一文中,分析了利用代理模式来逆向传值,其实还有一些其他的方式,如通知、Block等,...

  • iOS开发之利用Block逆向传值

    在iOS开发之通过代理逆向传值一文中,分析了利用代理模式来逆向传值,其实还有一些其他的方式,如通知、Block等,...

  • ioS 页面(代理、通知、block、单例、属性)传值

    iOS 页面(代理、通知、block、单例、属性)传值 一、传值分类 页面传值基本分为两种:正向传值和反向传值。 ...

  • iOS 页面(代理、通知、block、单例、属性)传值

    iOS 页面(代理、通知、block、单例、属性)传值 一、传值分类 页面传值基本分为两种:正向传值和反向传值。 ...

  • ios常用的三种传值方式

    iOS中有多种方案可以实现页面之间的传值,例如:属性传值、代理传值、block传值、单例传值...。常用的三种传值...

  • iOS的五种传值

    前言 iOS常见的五种传值分别为属性传值,通知传值,代理传值,block传值,单例传值 属性传值 用于正向传值,简...

网友评论

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

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