本申请实施例公开了一种信息处理方法、装置、存储介质及电子设备。该方法包括:在子视图中捕获待反向传递的目标事件消息;确定子视图的各级父视图,并逐级向子视图的各级父视图发送目标事件消息;判断当前层级的父视图是否存在对应接口接收目标事件消息;若存在,则基于当前层级的父视图对目标事件消息进行处理。本方案从根本上杜绝了事件消息反向传递过程中内存泄露的风险,降低了程序崩溃的概率。降低了程序崩溃的概率。降低了程序崩溃的概率。
【技术实现步骤摘要】
信息处理方法、装置、存储介质及电子设备
[0001]本申请涉及电子设备
,尤其涉及一种信息处理方法、装置、存储介质及电子设备。
技术介绍
[0002]在iOS系统下,终端界面的呈现是由父视图(父视图为底层的基本容器视图,也称为父视图或者下层视图)和各级子视图(子视图也称为上层视图)构成,而子视图又可以作为新的父视图包含其他子视图。因此,一个视图界面可看成是多个子视图的多个层级的叠加。每个子视图都有父视图(根视图除外,根视图是指界面最底层的第一个视图)。若有事件或者消息需要从父视图传递到子视图,此传递方式为正向传递;反之,若有事件或者消息需要从子视图传递到父视图,此传递方式为反向传递。
[0003]在现有的项目开发模式下,要求视图控制器(UI View Controller)与自定义视图(View)分离开来。通常情况下,假设自定义视图有事件或消息需要传递到视图控制器或者父视图中,通常传递方式有两种:一是通过代理的方式回传,另外一种是通过代码块(Block)的方式回传。然而,这两种方式在使用过程中极易导致内存泄露或者程序崩溃。
技术实现思路
[0004]本申请实施例提供一种信息处理方法、装置、存储介质及电子设备,降低了事件消息反向传递过程中内存泄露的风险、以及程序崩溃的概率。
[0005]第一方面,本申请实施例提供一种信息处理方法,包括:
[0006]在子视图中捕获待反向传递的目标事件消息;
[0007]确定所述子视图的各级父视图,并逐级向所述子视图的各级父视图发送所述目标事件消息;
[0008]判断当前层级的父视图是否存在对应接口接收所述目标事件消息;
[0009]若存在,则基于所述当前层级的父视图对所述目标事件消息进行处理。
[0010]第二方面,本申请实施例提供了一种信息处理装置,包括:
[0011]获取单元,用于在子视图中捕获待反向传递的目标事件消息;
[0012]第一处理单元,用于确定所述子视图的各级父视图,并逐级向所述子视图的各级父视图发送所述目标事件消息;
[0013]判断单元,用于判断当前层级的父视图是否存在对应接口接收所述目标事件消息;
[0014]第二处理单元,用于基于所述当前层级的父视图对所述目标事件消息进行处理。
[0015]在一实施方式中,所述装置还包括:
[0016]第一中断单元,用于在基于所述当前层级的父视图对所述目标事件消息进行处理的同时,中断向所述子视图的其他层级父视图发送所述目标事件消息。
[0017]在一实施方式中,所述第二处理单元具体用于:
[0018]若当前层级父视图不存在对应接口接收所述目标事件消息,则继续向所述当前层级父视图的上一级父视图转发所述目标事件消息,直至查询到有父视图存在对应接口接收所述目标事件消息。
[0019]在一实施方式中,所述第一处理单元具体用于:
[0020]确定所述子视图的各级父视图;
[0021]从所述各级父视图中筛选出可响应所述目标事件消息的父视图,得到父视图集合;
[0022]根据所述父视图集合中各父视图的层级信息,生成父级视图链;
[0023]逐级向所述父级视图链中的父视图发送所述目标事件消息。
[0024]在一实施方式中,所述装置还包括:
[0025]第二中断单元,用于若所述子视图的各级父视图都不存在对应接口接收所述目标事件消息,则中断所述目标事件消息。
[0026]在一些实施方式中,所述第二处理单元具体用于:
[0027]确定所述目标事件消息的标识信息;
[0028]根据所述标识信息确定对应的目标接口;
[0029]在所述当前层级的父视图中,通过调用所述目标接口对应的实现函数对所述目标事件消息进行处理。
[0030]在一实施方式中,所述装置还包括:
[0031]导入单元,用于在子视图中捕获待反向传递的目标事件消息之前,在所述当前层级的父视图中导入接口声明文件,其中,所述接口声明文件中至少声明了所述目标接口。
[0032]第三方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质中存储有多条指令,所述指令适于由处理器加载以执行上述的信息处理方法。
[0033]第四方面,本申请实施例还提供了一种电子设备,包括处理器及存储器,所述处理器与所述存储器电性连接,所述存储器用于存储指令和数据,处理器用于执行上述的信息处理方法。
[0034]本申请实施,在子视图中捕获待反向传递的目标事件消息,确定子视图的各级父视图,并逐级向子视图的各级父视图发送目标事件消息。在当前层级的父视图存在对应接口接收目标事件消息时,则基于当前层级的父视图对目标事件消息进行处理。本方案创造了事件从子视图向父视图的传递新方式,简化了事件从子视图向父视图的传递逻辑处理,规避了事件从子视图向父视图的传递时可能会出现的内存泄漏等问题。
附图说明
[0035]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0036]图1是本申请实施例提供的信息处理方法的一流程示意图。
[0037]图2是本申请实施例提供的信息处理方法的另一流程示意图。
[0038]图3是本申请实施例提供的信息处理装置的一结构示意图。
[0039]图4是本申请实施例提供的电子设备的一结构示意图。
[0040]图5是本申请实施例提供的电子设备的另一结构示意图。
具体实施方式
[0041]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0042]在iOS系统下,通过代理或者代码块将响应事件或者消息反向传递到视图控制器(UIViewController)或者父视图时容易出现内存泄露或者程序崩溃的问题。具体如下:
[0043]代理方式的传递原理为:假定A页面弹出了B页面,而B页面中有个事件需要回传给A。此时B页面中会预留一个“代理”的位置,同时B页面会声明一份协议,协议中要求了代理必须实现某些功能(比如说接受B页面响应的功能)。此时将B页面中的代理设置为A页面,并且A页面遵守协议并在A页面内部实现了协议中的功能,这时候B页面在触发响应时就能通过代理实现功能。
[0044]代码块方式的传递原理为:假定A页面弹出了B页面,而B页面中有个事件需要回传给A。此时在B页面上会携带一个类似监听器的装置,并将这个装置放置于A页面中,若B页面有相关事件需要传递给A时,只要触发这类似个监听器的装置,那么A就可以收到响应。...
【技术保护点】
【技术特征摘要】
1.一种信息处理方法,其特征在于,包括:在子视图中捕获待反向传递的目标事件消息;确定所述子视图的各级父视图,并逐级向所述子视图的各级父视图发送所述目标事件消息;判断当前层级的父视图是否存在对应接口接收所述目标事件消息;若存在,则基于所述当前层级的父视图对所述目标事件消息进行处理。2.根据权利要求1所述的信息处理方法,其特征在于,还包括:在基于所述当前层级的父视图对所述目标事件消息进行处理的同时,中断向所述子视图的其他层级父视图发送所述目标事件消息。3.根据权利要求1所述的信息处理方法,其特征在于,还包括:若当前层级父视图不存在对应接口接收所述目标事件消息,则继续向所述当前层级父视图的上一级父视图转发所述目标事件消息,直至查询到有父视图存在对应接口接收所述目标事件消息。4.根据权利要求1所述的信息处理方法,其特征在于,所述确定所述子视图的各级父视图,并逐级向所述子视图的各级父视图发送所述目标事件消息,包括:确定所述子视图的各级父视图;从所述各级父视图中筛选出可响应所述目标事件消息的父视图,得到父视图集合;根据所述父视图集合中各父视图的层级信息,生成父级视图链;逐级向所述父级视图链中的父视图发送所述目标事件消息。5.根据权利要求1所述的信息处理方法,其特征在于,还包括:若所述子视图的各级父视图都不存在对应接口接收所述目标事件消息,则中断所述目标事件消息。6.根据权利要求1
...
【专利技术属性】
技术研发人员:刘波,
申请(专利权)人:深圳依时货拉拉科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。