<原创>
由于某种需求,我们的项目中要使用到,一对多的传值.第一反应当然是,消息通知了.但是 个人感觉 太low.
所以 想到 以前用XMPP写即时通讯时,大神的SDK里,代理是可以一对多的,所以我追寻神的脚步,也就有了这篇blog.
消息通知,代理,以及block.这三中方式,优缺点我不做评价.有经验的人会根据业务需求去选择适合自己的方式.
1.效果演示: 把输入框里面的 文本 通过 多代理 给每一个 cell 的label 赋值.
delegate->前缀;
是通过多代理方式赋值.
block->前缀;
是通过多block 方式赋值.
然后跳转到另一个控制器 把另一个文本的 文字,传给其他 接受多代理,以及多block 的对象当中.也就是给首界面的 cell 赋值....
2.API:只有代理 实现协议,delegate. 以及多代理时 使用的监听,与移除监听方法.
3.设置 代理
4.代理对象 签订协议(当然你不签订也可以,程序员无视警告!)
5.分别 实现协议方法,以及在初始化方法中,调用 block 监听方法.
在 dealloc 时移除 block 监听
6.通过单例来触发事件.把输入框当中的文本传递给 delegate 以及block中
7.设置代理时,要保存 每一个delegate 对象,这里要注意,保存代理 为了防止容器当中的对象被 retain ,导致对象不释放.要采用
NSPointerArray
来做容器,弱引delegate 对象
8.多block.m实现 将block 做为value 存入字典当中.delegate对象通过hash转成 NSString 当做Key 缓存起来,当对象释放的时候可以再次调用
-
(void)removeObserver:(id)delegate;
从缓存当中移除 键值对.
附上Demo下载地址:
https://github.com/yangyangFeng/iOS-More-delegate
好了以上就是 iOS 实战开发当中 的 多代理,以及多block 传值.
其实好处很多,比如我在购物车当中 使用 多代理,不用每次 +-数量的时候来刷新 tableView ,或者用消息通知来通知每一个 cell 来更新数据.逼格太low.
励志成为一名写出高逼格代码的程序员的我,是不允许这么做的!!!
本次装13,到此结束!
转载请注明出处,喜欢请给我个星,鼓励我继续研究奇淫技巧.!
如果有新的好点子,改进欢迎指正.交流技术,分享装13技巧.