环信会话列表和聊天界面修改头像和昵称

2021-06-21  本文已影响0人  超级黑

事情是这样的,本身我们公司项目很简洁,原计划自定义cell完事,也确实是这么做的.

但这段时间项目结束之后,突然想到看看环信demo中是如何实现会话列表界面的.

这个界面本身并不难,古人曾说, 一千个读者就有一千个哈姆雷特,看看别人的哈姆雷特也挺好嘛

意外之喜.阅读后,让我对协议有了一个更深层次的理解.

1.抛出问题

2.我的理解

首先我们来抛出一个问题:

如何修改会话列表和聊天界面的头像和昵称?

(我和我们公司安卓工程师探讨过,发现思想完全一致,所以如果你是安卓工程师遇到此问题了,也可以阅读此文章,应该也可以解决你的问题)

方法简单,但这里先说明一下设计思路:

MVVM

Model view viewModel

思路明确后,我们需要拿到其中的viewModel,然后修改其中的值.

会话列表控制器和viewModel 聊天控制器和viewModel

如果我们不考虑其中的结构/思路/思想,单纯为了解决问题,那么上述截图已经可以解决问题了.

我的理解:

为什么返回的viewModel一定是遵循某协议的?

我们正常理解的协议是:制定协议,指定委托,实现协议方法.

小了!格局小了!

当我思考上面截图这个协议之后.才明白,这里的协议是为了要求子类遵循标准.

这里协议本意并非是为了让实现什么,而是为了限定参数类型/参数名.是对数据模型的一种约束.

对于一个类型,无论是这个类型持有的方法还是属性,都是其特有的特点,既然是特点,便可继承.而这些方法啊,属性啊,不都是对此类型的一种约束吗?所以,我们可以看做 类型持有其特有的属性和方法,一些属性和一些方法约束了某一个类型.

如果同时了解java的同学都知道.java中有一个类型关键字为interface,我们称之为接口类,抽象类的一种,那么本意指的是,它也是一个类,只是无法实例化.

回头再看oc语言中的protocol,不就是java中的interface吗?

看到如此高质量的demo,使我的技术提升很大.多看大神的代码和多思考其思路,都是学习机会.

致敬环信大神!!!👍🏻👍🏻👍🏻

上一篇下一篇

猜你喜欢

热点阅读