LFProjectMonitor
简单嵌入项目并监听,便于移除或关闭监听。不影响项目结构与代码。
- 监听 UI Controller
- 是否被持有(关闭后没有被释放)
- 当前显示的 Controller 类名(便于接触了解项目)
- 监听 UI 的点击事件
- 具体的点击坐标、点击状态、被点击的类名、点击触发的方法
- 监听 UI 响应的卡顿(真机测试)
- 假定连续 3 次超时 90ms 认为卡顿(也包含了单次超时 90ms)
- 监听方法响应时间(真机 64 位测试)
- 拦截 objc_msgSend 的 before 与 after 之间的耗时
监听开启后会在控制台输出,同时也会记录在 Documents/ProjectMonitor 目录下。
## 如何使用
创建一个任意文件,重写 +load 方法,内容如下:
+ (void)load
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
/** 创建管理器 */
MonitorManager *manager = [MonitorManager new];
/** 创建监听模式 */
/** UI销毁 */
MonitorBase *muid = [MonitorUIDestroy new];
[manager addMonitor:muid];
/** 屏幕点击 */
MonitorBase *muit = [MonitorUITouch new];
[manager addMonitor:muit];
/** 卡顿 */
MonitorBase *muis = [MonitorUIStutter new];
[manager addMonitor:muis];
/** 方法耗时监控,必须真机64位 */
MonitorBase *mumtc = [MonitorMethodTimeCost new];
[manager addMonitor:mumtc];
/** 执行组合模式 */
[manager execute];
});
}