Telegram研究:聊天页面数据转换流程
数据转换过程 Postbox.Message → MessageHistoryEntry → ChatHistoryViewTransitionInsertEntry + ChatHistoryViewTransitionUpdateEntry → ChatMessageItemImpl (类似UITableView里的datasource)→ ListViewInsertItem + L...
数据转换过程 Postbox.Message → MessageHistoryEntry → ChatHistoryViewTransitionInsertEntry + ChatHistoryViewTransitionUpdateEntry → ChatMessageItemImpl (类似UITableView里的datasource)→ ListViewInsertItem + L...
前言 由于项目里部分三方库已经很久远,支持的模拟器版本不包arm64-simulator架构,导致直接在新电脑上运行模拟器直接启动不了 1、三方库信息如下: lipo -info /Users/xx/xxx/xxx.a Architectures in the fat file: /Users/xx/xxx/xxx.a are: armv7 armv7s i386 x86_64 a...
前言 由于Telegram的代码量太大,而且显示的几乎全是_ASDisplayView,很多node文件有4000~5000行代码,导致调试查看十分麻烦,AsyncDisplayKit的ASDisplayNode提供了设置自定义类的方法,可以在debug时方便定位问题 setViewBlock的优先级要高于viewClass 方案一、在ASDisplayNode子类里设置setVi...
前言 在上一篇里提到过,之前被telegram里源码编译成静态库的过程吓住了一直没研究,实际是BUILD里调用shell脚本,podspec里也有一样的功能,利用这些特性可以正常将BUILD迁移到podspec,具体内容在前一篇里有写,只是单独把编译源码的部分抽取出来 telegram里有不少库都是直接引入三方的源码,在使用bazel编译阶段,直接把源码编译成xxx.a的静态库 比如...
之前研究telegram通过bazel使用的库改成在自己项目里使用cocopod引入,已经过去了一年有余,当时花了很大的功夫还遇到很大问题,现在回头再次研究使用,配合Chatgpt自动生成改写,发现很快就改写完了,这过程相对比较顺利,不过也遇到了一些问题 1、文件后缀不对 问题: ```Fetching external sources -> Fetching podspec for...
问题 在已有iOS项目里接入flutter模块后,第一次present或push一个FlutterViewController后,通过手势或调用方法关闭flutter页面后,再次present或push时展示不了flutter页面了 原因: flutter页面关闭后,flutterEngine.viewController还是持有FlutterViewController,导致Fl...
常见的iOS应用里,一行文字都可以标记出电话号码、链接等内容,方便用户在一段文本中点击拨打电话或点击链接 系统级实现方式,使用系统的 NSDataDetector + NSTextCheckingTypeLink +NSTextCheckingTypePhoneNumber - (void)enumerateMatchesInString:(NSString *)string opti...
参考: 将 Flutter module 集成到 iOS 项目 Flutter混合开发:在已有iOS项目中引入Flutter 在现有 iOS 项目中,接入新的 Flutter 项目或现有的 Flutter 项目 前言 世界唯一不变的是一直在变,最近项目里计划把部分模块使用flutter的SDK的方式接入,记得之前写flutter还是19年的时候,现在已经过去了5年...
平常在一台电脑上使用各种AI工具,比如Chatgpt或者deepseek,昨天突然换了一台电脑使用,使用Chatgpt解决一个问题,一直没有解决好,想着换到deepseek试一下,结果deepseek必须要注册账号登录才能使用,我使用了一个免费邮箱注册,死活收不到邮箱验证码,于是换了下腾讯的云宝,结果云宝也必须要注册和登录,然后再尝试了github的copilot,由于没有登录github,...
前言 在往常的业务开发中,对于视频的交互展示,一般都是有一个专门的封面图片地址,一个专门的视频地址两个字段组成,这样做的原因: 1、在列表或默认展示这个封面图片,点击封面图片或播放按钮才正式播放视频,这样可以在不播放时能不用下载视频,节省服务器流量及用户的手机流量。 2、另一个常用场景就是在聊天列表里的视频,由于通常视频和图片都是加密的,没法直接从加密视频里获取第一帧图片,所以需要一个专...