环信IM会话列表和聊天界面修改头像和昵称
如何修改会话列表和聊天界面的头像和昵称?
方法简单,但这里先说明一下设计思路:
MVVM
Model view viewModel
思路明确后,我们需要拿到其中的viewModel,然后修改其中的值.
会话列表控制器和viewModel
聊天控制器和viewModel
如果我们不考虑其中的结构/思路/思想,单纯为了解决问题,那么上述截图已经可以解决问题了.
我的理解:
为什么返回的viewModel一定是遵循某协议的?
我们正常理解的协议是:制定协议,指定委托,实现协议方法.
小了!格局小了!
当我思考上面截图这个协议之后.才明白,这里的协议是为了要求子类遵循标准.
这里协议本意并非是为了让实现什么,而是为了限定参数类型/参数名.是对数据模型的一种约束.
对于一个类型,无论是这个类型持有的方法还是属性,都是其特有的特点,既然是特点,便可继承.而这些方法啊,属性啊,不都是对此类型的一种约束吗?所以,我们可以看做 类型持有其特有的属性和方法,一些属性和一些方法约束了某一个类型.
如果同时了解java的同学都知道.java中有一个类型关键字为interface,我们称之为接口类,抽象类的一种,那么本意指的是,它也是一个类,只是无法实例化.
回头再看oc语言中的protocol,不就是java中的interface吗?
看到如此高质量的demo,使我的技术提升很大.多看大神的代码和多思考其思路,都是学习机会.