0%

最近在做性能监控,思路大致是 hook 一些 cpu 耗时比较严重(layoutSubviews,cellForRow 等)的方法,获取方法调用的时间写入日志。后期对日志进行分析,得到优化的方向。

此文简单介绍一下整套系统的设计思路。基本没什么营养,仅供整理思路所用

阅读全文 »

第二期:添加运行时的调试工具,帮助调试(自定义 time profiler)

统计方法调用时长

运行时懒加载 swizzle 我们关心的方法: layoutSubviews,drawRect,cellForRow

懒加载保证了我们调用时机永远在调用栈最底下,这样我们在方法被调用之前记录一个时间(start time),原始实现调用之后记录一个时间(end time),得到一个方法调用时长(duration)。

阅读全文 »

因为在 demo 中测试 ReplayKit,直接把开始录制的行为写在了 didFinishLaunching 中
导致出现如下输出

1
Domain=com.apple.ReplayKit.RPRecordingErrorDomain Code=-5803 "开始录制失败" UserInfo={NSLocalizedDescription=开始录制失败}

曾经看到过 ReplayKit 是记录 UIWindow 的每一次渲染,忽然意识到这个时候 window 初始化都没完成。
delay 录屏行为以后发现可以正常使用了

环境依赖:zsh

编辑 .zshrc

加入如下行

function xc {
  proj=$(ls -d *.xcworkspace/ 2>/dev/null)

  if [ -n "$proj" ]; then
    # Omit -beta if you're not using beta version
    open -a Xcode "$proj"
  else
    echo "No Xcode project detected."
  fi

}

重新激活 zsh

source .zshrc

使用

pod install 结束以后命令后执行 xc 自动打开 xcode 文件