一种关联对象追踪方法及装置制造方法及图纸

技术编号:19647040 阅读:31 留言:0更新日期:2018-12-05 20:31
本发明专利技术实施例公开了一种关联对象追踪方法,包括:调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数;获取当前对象,并在当前对象中加入强引用标识符;通过多个入口函数创建当前对象所对应的临时关联对象;从预设的关联对象映射表中查找与临时关联对象对应的键值,确定键值是否存在于用于存储关联对象的哈希存储表中;若存在,则确定当前对象中的强引用标识符是否传入临时关联对象中;若确定当前对象中的强引用标识符传入临时关联对象中,则确定临时关联对象为当前对象的强引用关联对象。本发明专利技术实施例还公开了一种关联对象追踪装置。采用本发明专利技术实施例,可以提高查询关联对象的效率,以及提高获取关联对象的准确性。

A Tracking Method and Device for Associated Objects

The embodiment of the present invention discloses an associated object tracking method, which includes: calling open source tools to dynamically modify multiple entry functions used to implement the associated object in the bottom of the operating system; acquiring the current object and adding strong reference identifiers to the current object; and creating temporary corresponding to the current object through multiple entry functions. Relevant object; Find the key value corresponding to the temporary associated object from the default mapping table to determine whether the key value exists in the hash storage table used to store the associated object; If it exists, determine whether the strong reference identifier in the current object is passed into the temporary associated object; If it exists, determine whether the strong reference identifier in the current object is passed into the temporary associated object; If it is determined that the strong reference in the current object exists. When an identifier is passed into a temporary association object, it is determined that the temporary association object is a strongly referenced Association object of the current object. The embodiment of the present invention also discloses an associated object tracking device. The embodiment of the present invention can improve the efficiency of querying related objects and the accuracy of acquiring related objects.

【技术实现步骤摘要】
一种关联对象追踪方法及装置
本专利技术涉及电子
,尤其涉及一种关联对象追踪方法及装置。
技术介绍
在移动设备操作系统iOS中,Object-C是一套面向对象的语言,具备面向对象的语言特性(封装、继承和多态),同时也具备静态语言的特性,又有动态特性(动态类型、动态绑定和动态加载)。为了提高使用Object-C语言编程效率,需要查询对象所对应的关联对象、并分析对象的引用关系属性。但是,现有技术采用的人工查询并分析对象关联的属性,导致效率低下,而且并不能准确地获取到强引用的关联对象。
技术实现思路
本专利技术实施例提供一种关联对象追踪方法及装置。可以提高查询关联对象的效率,以及提高获取关联对象的准确性。本专利技术第一方面提供了一种关联对象追踪方法,包括:调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数;获取当前对象,并在所述当前对象中加入强引用标识符;通过所述多个入口函数创建所述当前对象所对应的临时关联对象;从预设的关联对象映射表中查找与所述临时关联对象对应的键值,确定所述键值是否存在于用于存储关联对象的哈希存储表中;若存在,则确定所述当前对象中的所述强引用标识符是否传入所述临时关联对象中;若确定所述当前对象中的所述强引用标识符传入所述临时关联对象中,则确定所述临时关联对象为所述当前对象的强引用关联对象。其中,所述通过所述多个入口函数创建所述当前对象所对应的临时关联对象之前,还包括:确定所述当前对象是否存在关联对象。其中,所述确定所述当前对象是否存在关联对象包括:获取所述当前对象的结构体指针,并在所述结构体指针中查找目标变量的值;根据所述目标变量的值,确定所述当前对象是否存在关联对象。其中,所述通过所述多个入口函数创建所述当前对象所对应的临时关联对象包括:获取所述当前对象所对应的关联对象值;判断所述关联对象值是否为空;若所述关联对象值不为空,则通过所述多个入口函数创建所述当前对象所对应的临时关联对象。其中,所述获取当前对象包括:获取所有对象,并将所述所有对象加入对象消息栈;对所述对象消息栈中的所有对象进行出栈,获取所述当前对象。其中,所述调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数之前,还包括:获取所述操作系统底层的符号表系统,所述符号表系统包括所述所有对象。相应地,本专利技术第二方面提供了一种关联对象追踪装置,包括:函数修改模块,用于调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数;对象获取模块,用于获取当前对象,并在所述当前对象中加入强引用标识符;对象创建模块,用于通过所述多个入口函数创建所述当前对象所对应的临时关联对象;对象确定模块,用于从预设的关联对象映射表中查找与所述临时关联对象对应的键值,确定所述键值是否存在于用于存储关联对象的哈希存储表中;标识确定模块,用于若存在,则确定所述当前对象中的所述强引用标识符是否传入所述临时关联对象中;关联确定模块,用于若确定所述当前对象中的所述强引用标识符传入所述临时关联对象中,则确定所述临时关联对象为所述当前对象的强引用关联对象。其中,所述对象确定模块,还用于确定所述当前对象是否存在关联对象。其中,所述对象确定模块具体用于:获取所述当前对象的结构体指针,并在所述结构体指针中查找目标变量的值;根据所述目标变量的值,确定所述当前对象是否存在关联对象。其中,所述对象创建模块具体用于:获取所述当前对象所对应的关联对象值;判断所述关联对象值是否为空;若所述关联对象值不为空,则通过所述多个入口函数创建所述当前对象所对应的临时关联对象。其中,所述对象获取模块具体用于:获取所有对象,并将所述所有对象加入对象消息栈;对所述对象消息栈中的所有对象进行出栈,获取所述当前对象。其中,所述对象获取模块,还用于获取所述操作系统底层的符号表系统,所述符号表系统包括所述所有对象。相应地,本专利技术第三方面提供了一种关联对象追踪装置,包括接口电路、存储器以及处理器,其中,存储器中存储一组程序代码,且处理器用于调用存储器中存储的程序代码,用于执行以下操作:调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数;获取当前对象,并在所述当前对象中加入强引用标识符;通过所述多个入口函数创建所述当前对象所对应的临时关联对象;从预设的关联对象映射表中查找与所述临时关联对象对应的键值,确定所述键值是否存在于用于存储关联对象的哈希存储表中;若存在,则确定所述当前对象中的所述强引用标识符是否传入所述临时关联对象中;若确定所述当前对象中的所述强引用标识符传入所述临时关联对象中,则确定所述临时关联对象为所述当前对象的强引用关联对象。本申请的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载并执行上述各方面所述的方法。本申请的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。实施本专利技术实施例,在本专利技术实施例中,通过调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数,从而动态实现重定向该三个入口函数的实现方式;并在当前对象中加入强引用标识符,该强引用标识符实现了线程安全的强引用判断,然后遍历所有对象的关联对象,从而提高了获取强引用的关联对象效率以及准确性。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提出的一种关联对象追踪方法的流程示意图;图2是本专利技术另一实施例提出的一种关联对象追踪方法的流程示意图;图3是本专利技术实施例提出的一种关联对象装置的结构示意图;图4是本专利技术另一实施例提出的一种关联对象装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参考图1,图1是本专利技术实施例提出的一种关联对象追踪方法流程示意图。如图所示,本专利技术实施例中的方法包括:S101,调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数。具体实现中,可以在程序启动时,首先加载开源工具,该开源工具可以是fishhook,fishhook是一种动态修改链接Mach-O符号表的开源工具,其中,Mach-O是MachObject文件格式的缩写,一种可执行文件、目标代码、动态库或内核转储的文件格式。在加载开源工具成功之后,获取所述操作系统底层的符号表系统,所述符号表系统包括所述所有对象,所述符号表系统还包括数据类型、作用域以及内存地址等等。最后调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数,从而动态实现重定向多个入口函数的实现方式。其中,多个入口函数可以包括objc_setAssociatedObject,objc_removeAssociatedObject,objc_getAssociatedObject。其中,obj本文档来自技高网...

【技术保护点】
1.一种关联对象追踪方法,其特征在于,所述方法包括:调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数;获取当前对象,并在所述当前对象中加入强引用标识符;通过所述多个入口函数创建所述当前对象所对应的临时关联对象;从预设的关联对象映射表中查找与所述临时关联对象对应的键值,确定所述键值是否存在于用于存储关联对象的哈希存储表中;若存在,则确定所述当前对象中的所述强引用标识符是否传入所述临时关联对象中;若确定所述当前对象中的所述强引用标识符传入所述临时关联对象中,则确定所述临时关联对象为所述当前对象的强引用关联对象。

【技术特征摘要】
1.一种关联对象追踪方法,其特征在于,所述方法包括:调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数;获取当前对象,并在所述当前对象中加入强引用标识符;通过所述多个入口函数创建所述当前对象所对应的临时关联对象;从预设的关联对象映射表中查找与所述临时关联对象对应的键值,确定所述键值是否存在于用于存储关联对象的哈希存储表中;若存在,则确定所述当前对象中的所述强引用标识符是否传入所述临时关联对象中;若确定所述当前对象中的所述强引用标识符传入所述临时关联对象中,则确定所述临时关联对象为所述当前对象的强引用关联对象。2.如权利要求1所述的方法,其特征在于,所述通过所述多个入口函数创建所述当前对象所对应的临时关联对象之前,还包括:确定所述当前对象是否存在关联对象。3.如权利要求2所述的方法,其特征在于,所述确定所述当前对象是否存在关联对象包括:获取所述当前对象的结构体指针,并在所述结构体指针中查找目标变量的值;根据所述目标变量的值,确定所述当前对象是否存在关联对象。4.如权利要求1所述的方法,其特征在于,所述通过所述多个入口函数创建所述当前对象所对应的临时关联对象包括:获取所述当前对象所对应的关联对象值;判断所述关联对象值是否为空;若所述关联对象值不为空,则通过所述多个入口函数创建所述当前对象所对应的临时关联对象。5.如权利要求1所述的方法,其特征在于,所述获取当前对象包括:获取所有对象,并将所述所有对象加入对象消息栈;对所述对象消息栈中的所有对象进行出栈,获取所述当前对象。6.如权利要求5所述的方法,其特征在于,所述调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数之前,还包括:获取所述操作系统底层的符号表系统,所述符号表系统包括所述所有对象,所述所有对象包括所述当前对象。7.一种关联对象追踪装置,其特征在于,所述装置包括:函数修改模块,用于调用开源工具动态修改操作系统底层中用于实现关联对象的多个入口函数;对象获取模块,用于获取当前对象,并在所述当前对象中加入强引用标识符;对象创建模块,用于通过所述多个入口函数创建所述当前对象所对应的临时关联对象;对象确定模块,用于从预设的关联对象映射表中查找与所述临时关联对象对应的键值,确定所述键值是否...

【专利技术属性】
技术研发人员:程春林
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1