[发明专利]防止应用程序崩溃的方法及装置在审
| 申请号: | 201910325260.9 | 申请日: | 2019-04-22 |
| 公开(公告)号: | CN110083474A | 公开(公告)日: | 2019-08-02 |
| 发明(设计)人: | 石恒智 | 申请(专利权)人: | 无线生活(杭州)信息科技有限公司 |
| 主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F9/54 |
| 代理公司: | 北京尚伦律师事务所 11477 | 代理人: | 谢丽莎 |
| 地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 目标消息 响应 应用程序 崩溃 转发 对象返回 启动消息 响应目标 自动生成 拦截 返回 应用 | ||
本公开是关于防止应用程序崩溃的方法及装置。该方法包括:在启动消息转发机制,确定第一对象不能动态加方法来响应目标消息时,拦截所述第一对象的目标方法,所述目标方法用于使第一对象返回返回值对象;生成能响应所述目标消息的第二对象;将所述目标消息转发给所述第二对象响应。该技术方案可以自动生成一个第二对象来响应该目标消息,避免出现目标消息无法被响应而导致的应用崩溃。
技术领域
本公开涉及计算机技术领域,尤其涉及防止应用程序崩溃的方法及装置。
背景技术
iOS(iPhone Operating System,苹果操作系统)平台的应用程序使用的编程语言是Objective-C(扩充C的面向对象编程语言)。该语言的一大特点是具有动态性,只有在某个消息所指示的方法被执行时,才能确定执行该方法的对象。但是就是由于这样的动态性,在程序编译阶段无法确定最终执行该消息所指示的方法的对象,这就会出现最终确定的对象在执行该消息指示的方法时发生错误(即该对象并不能实现该消息所指示的方法),这就会导致应用程序崩溃。
发明内容
本公开实施例提供一种防止应用程序崩溃的方法及装置。所述技术方案如下:
根据本公开实施例的第一方面,提供一种防止应用程序崩溃的方法,包括:
在启动消息转发机制,确定第一对象不能动态加方法来响应目标消息时,拦截所述第一对象的目标方法,所述目标方法用于使第一对象返回返回值对象;
生成能响应所述目标消息的第二对象;
将所述目标消息转发给所述第二对象响应。
在一个实施例中,所述方法还包括:
判断是否存在其他对象响应所述目标消息;
所述生成能响应所述目标消息的第二对象,包括:
在判定不存在其他对象响应所述目标消息时,生成能响应所述目标消息的第二对象
在一个实施例中,所述判断是否存在其他对象响应所述目标消息,包括:
针对所述其他对象中的任一待判定对象,判断所述待判定对象自身能否直接响应所述目标消息;
在所述待判定对象不能直接响应所述目标消息时,判断所述待判定对象是否已经提供了一个新的对象用于响应所述目标消息;在所述待判定对象能直接响应所述目标消息时,判定所述待判定对象能响应所述目标消息;
在所述待判定对象没有提供一个新的对象用于响应所述目标消息时,判定所述待判定对象不能响应所述目标消息;在所述待判定对象提供一个新的对象用于响应所述目标消息时,判定所述待判定对象能响应所述目标消息;
在所述待判定对象能响应所述目标消息时,确定存在其他对象响应所述目标消息,在任一所述待判定对象均不能响应所述目标消息时,确定不存在其他对象响应所述目标消息。
在一个实施例中,所述生成能响应所述目标消息的第二对象,包括:
创建一个新对象;
在所述新对象中添加用于响应所述目标消息的方法,生成所述第二对象。
在一个实施例中,所述方法还包括:
在判定所述其他对象能响应所述目标消息时,执行所述第一对象的目标方法,使第一对象返回返回值对象,所述返回值对象为能响应所述目标消息的其他对象。
根据本公开实施例的第二方面,提供一种防止应用程序崩溃的装置,包括:
拦截模块,用于在启动消息转发机制,确定第一对象不能动态加方法来响应目标消息时,拦截所述第一对象的目标方法,所述目标方法用于使第一对象返回返回值对象;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无线生活(杭州)信息科技有限公司,未经无线生活(杭州)信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910325260.9/2.html,转载请声明来源钻瓜专利网。





