环信receive的本地封装
使用环信一年多来,由于iOS环信的长链本地接收通过的是单例对象EaseMob的代理来实现的,但是由于OC中代理单一指向问题,导致多个使用环信的界面都需要设置代理,并且要在viewwillappear方法中设置,这样虽然能够实现需求,但很不友好。
最近在重构环信的本地封装,思路如下:
经实测以上方法可行,并避免了在viewwillappear方法中加入冗余代码,影响效率。
最近在重构环信的本地封装,思路如下:
- 建立一个新的单例对象(该对象是EaseMob的Receive的进一步抽象)
- 新的单例对象是EaseMob单例的delegate
- 新的单例对象使用block来实现长链消息的本地handle
- 针对每一个接收代理方法建立private一个数组属性,每个数组的成员变量都是block(当delegate被调用,便利数组回执block)
经实测以上方法可行,并避免了在viewwillappear方法中加入冗余代码,影响效率。