0%

总结

回看过去,做了什么,能否沉淀些东西,简要记录

组件化

详细的内容在另外一个组件化篇幅里记录

  1. 组件化目的:
  • 共享基础设施
  • 下沉公共服务
  • 隔离业务代码(模块儿)
  • 二进制加速编译,带上dwarf符号信息,和源文件
  • 开启modular,支持swift混编
    • 主要是解决头文件引用问题
    • 需要采用’<>’尖括号形式,兼容modular和framework
  1. X点
  • 借鉴Beehive, 注解方式注册。 类似于java的框架spring的模式,
  • 使用自定义goto字符串协议
  • 统一管理cocoapods版本号,利用bundle工具管理版本号
  • 由于podfile.lock和menifest.lock文件不一致问题,把pod文件加入版本控制

热更新方案

  1. 方法中带block的,

    • block在原神生成,在脚本中调用
    • block需要在脚本中生成,在原生调用
  2. hook方法,msgforwarding,

  3. 利用libffi调用原生C函数,

  4. 通过符号找函数地址,dlsym,或者fishhook的方案,利用segment_linkedit, lc_symta(字符表和符号表)b, lc_dysymtab(间接符号表,系统/第三方的导出符号)

CRASH && APM

  1. 可捕获的
    • C++、OC、数组越界、抛异常等软件异常
    • 断言等
  2. 不可捕获的,或者说是abort
    • oom
    • anr
    • 死锁
    • 非法应用签名
    • 后台超时
    • 内存紧张
    • 设备过热
  3. crash监控
    • 注册监听,CPPException,OCException、singal、machException

聊天室业务

  1. 架构调整
  • mvp为主。 管理各种有戏模板,抽取模板抽象类,统一调度,抽取基类,反向调用
  • vchatBus。 聊天室事件总线,协议为key,实现为value,储存在单例中,统一分发
  • 优先级队列。 通过堆实现
  1. 业务模块儿
  • 重构Timer,统一调度
  • 实现优先级view,以此重构banner区,房间广播,礼物动效等队列管理
  • 重构IM消息分发,RTC事件回调,基于vchatbus组件
  • 整理视图层级,functionview,popbackgroudview. 管理各种不同层级的视图,和弹窗
  1. 媒体报警日志及问题查询
  • 媒体查询
    1. 媒体中台
    2. kibanna日志
    3. IM日志捞取
    4. 接口回调
    5. hubble警告
  • crash等问题
    1. 公司内部crash后台分析
    2. MDLog的kibana日志
    3. IM日志捞取
    4. 接口查询

问题

  • sdwebimage的问题, 老的下载还在排队,新的下载取消了所有的回调
  • init方法的问题arc下,过度release

  • 程序员的自我修养
  • 多线程与内存管理
  • 深入理解osx/ios操作系统
希望对您有所帮助,您的支持将是我莫大的动力!