回看过去,做了什么,能否沉淀些东西,简要记录
组件化
详细的内容在另外一个组件化篇幅里记录
- 组件化目的:
- 共享基础设施
- 下沉公共服务
- 隔离业务代码(模块儿)
- 二进制加速编译,带上dwarf符号信息,和源文件
- 开启modular,支持swift混编
- 主要是解决头文件引用问题
- 需要采用’<>’尖括号形式,兼容modular和framework
- X点
- 借鉴Beehive, 注解方式注册。 类似于java的框架spring的模式,
- 使用自定义goto字符串协议
- 统一管理cocoapods版本号,利用bundle工具管理版本号
- 由于podfile.lock和menifest.lock文件不一致问题,把pod文件加入版本控制
热更新方案
方法中带block的,
- block在原神生成,在脚本中调用
- block需要在脚本中生成,在原生调用
hook方法,msgforwarding,
利用libffi调用原生C函数,
通过符号找函数地址,dlsym,或者fishhook的方案,利用segment_linkedit, lc_symta(字符表和符号表)b, lc_dysymtab(间接符号表,系统/第三方的导出符号)
CRASH && APM
- 可捕获的
- C++、OC、数组越界、抛异常等软件异常
- 断言等
- 不可捕获的,或者说是abort
- oom
- anr
- 死锁
- 非法应用签名
- 后台超时
- 内存紧张
- 设备过热
- crash监控
- 注册监听,CPPException,OCException、singal、machException
聊天室业务
- 架构调整
- mvp为主。 管理各种有戏模板,抽取模板抽象类,统一调度,抽取基类,反向调用
- vchatBus。 聊天室事件总线,协议为key,实现为value,储存在单例中,统一分发
- 优先级队列。 通过堆实现
- 业务模块儿
- 重构Timer,统一调度
- 实现优先级view,以此重构banner区,房间广播,礼物动效等队列管理
- 重构IM消息分发,RTC事件回调,基于vchatbus组件
- 整理视图层级,functionview,popbackgroudview. 管理各种不同层级的视图,和弹窗
- 媒体报警日志及问题查询
- 媒体查询
- 媒体中台
- kibanna日志
- IM日志捞取
- 接口回调
- hubble警告
- crash等问题
- 公司内部crash后台分析
- MDLog的kibana日志
- IM日志捞取
- 接口查询
问题
- sdwebimage的问题, 老的下载还在排队,新的下载取消了所有的回调
- init方法的问题arc下,过度release
书
- 程序员的自我修养
- 多线程与内存管理
- 深入理解osx/ios操作系统