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

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

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


iOS 奇淫技巧之<多代理,多block传值>_第1张图片
duodaili2.gif

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


iOS 奇淫技巧之<多代理,多block传值>_第2张图片
duodaili3.png

3.设置 代理


iOS 奇淫技巧之<多代理,多block传值>_第3张图片
duodaili4.png

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


iOS 奇淫技巧之<多代理,多block传值>_第4张图片
duodaili5.png

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


iOS 奇淫技巧之<多代理,多block传值>_第5张图片
duodaili6.png

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


iOS 奇淫技巧之<多代理,多block传值>_第6张图片
duodaili7.png

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


iOS 奇淫技巧之<多代理,多block传值>_第7张图片
duodaili8.png

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

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


    iOS 奇淫技巧之<多代理,多block传值>_第8张图片
    duodaili9.png

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

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

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

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

你可能感兴趣的:(iOS 奇淫技巧之<多代理,多block传值>)