[发明专利]IOS应用的方法耗时、加载视图耗时的监测方法及系统有效
申请号: | 201810065372.0 | 申请日: | 2018-01-23 |
公开(公告)号: | CN108197004B | 公开(公告)日: | 2021-04-27 |
发明(设计)人: | 张骏;张文明;陈少杰 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 武汉智权专利代理事务所(特殊普通合伙) 42225 | 代理人: | 张凯 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | ios 应用 方法 耗时 加载 视图 监测 系统 | ||
1.一种IOS应用的方法耗时监测方法,其用于监测所述IOS应用调用的主线程中各方法的调用耗时,其特征在于:
将objc_msgSend函数指针设置为hook函数;所述hook函数包括:第一函数,其用于获取objc_msgSend函数的参数;第二函数,其用于使用objc_msgSend函数的参数调取objc_msgSend函数并记录开始调取时间;第三函数,其用于objc_msgSend函数调取完毕时,记录objc_msgSend函数的调取结束时间,根据调取开始时间和调取结束时间计算出调取objc_msgSend函数的调用耗时;
IOS应用调用主线程中任一方法时,通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出调取主线程中该方法时objc_msgSend函数的调用耗时;通过调用hook函数分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时;
定义一个Objective-C的类,并实现该类的单例加载;通过所述Objective-C的类分别获取IOS应用调用主线程中各方法时objc_msgSend函数的调用耗时并转换为所述Objective-C的类中的对象;
创建一个C语言文件MethodCoreLib.c及其头文件MethodCoreLib.h;在所述头文件中创建C语言层开始拦截API,C语言层停止拦截API和C语言层获取拦截结果API;在所述C语言文件MethodCoreLib.c文件中定义两个全局变量:拦截开关和拦截结果;拦截开关用于控制开始或停止通过所述objc_msgSend函数指针调用hook函数;拦截结果用于存储所述hook函数计算出的调取objc_msgSend函数的调用耗时;在C语言层开始拦截API中设置拦截开关为开始,在C语言层停止拦截API中设置拦截开关为停止,在C语言层获取拦截结果API中设置将拦截结果传出并置空;
在所述Objective-C的类中定义OC层开始拦截API和OC层停止拦截API;OC层开始拦截API用于调用C语言层开始拦截API,OC层停止拦截API用于调用C语言层停止拦截API和C语言层获取拦截结果API;
用户选择开始监测IOS应用调用的主线程中各方法的调用耗时,通过OC层开始拦截API调用C语言层开始拦截API开始通过所述objc_msgSend函数指针调用hook函数,通过所述hook函数计算出的调用主线程中各方法时objc_msgSend函数的调用耗时;将计算出的调用主线程中各方法时objc_msgSend函数的调用耗时分别添加进所述拦截结果;
用户选择停止监测IOS应用调用的主线程中各方法的调用耗时,通过OC层停止拦截API调用C语言层停止拦截API停止通过所述objc_msgSend函数指针调用hook函数,并通过C语言层获取拦截结果API从所述拦截结果中获取到调用主线程中各方法时objc_msgSend函数的调用耗时并置空所述拦截结果。
2.如权利要求1所述的一种IOS应用的方法耗时监测方法,其特征在于:第二函数还用于从所述objc_msgSend函数的参数中获取调用主线程中方法的嵌套层级。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810065372.0/1.html,转载请声明来源钻瓜专利网。