[發明專利]一種關聯對象追蹤方法及裝置有效
| 申請號: | 201710383370.1 | 申請日: | 2017-05-26 |
| 公開(公告)號: | CN108932263B | 公開(公告)日: | 2023-01-10 |
| 發明(設計)人: | 程春林 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F16/245 | 分類號: | G06F16/245;G06F9/30 |
| 代理公司: | 廣州三環專利商標代理有限公司 44202 | 代理人: | 郝傳鑫;熊永強 |
| 地址: | 518057 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 關聯 對象 追蹤 方法 裝置 | ||
本發明實施例公開了一種關聯對象追蹤方法,包括:調用開源工具動態修改操作系統底層中用于實現關聯對象的多個入口函數;獲取當前對象,并在當前對象中加入強引用標識符;通過多個入口函數創建當前對象所對應的臨時關聯對象;從預設的關聯對象映射表中查找與臨時關聯對象對應的鍵值,確定鍵值是否存在于用于存儲關聯對象的哈希存儲表中;若存在,則確定當前對象中的強引用標識符是否傳入臨時關聯對象中;若確定當前對象中的強引用標識符傳入臨時關聯對象中,則確定臨時關聯對象為當前對象的強引用關聯對象。本發明實施例還公開了一種關聯對象追蹤裝置。采用本發明實施例,可以提高查詢關聯對象的效率,以及提高獲取關聯對象的準確性。
技術領域
本發明涉及電子技術領域,尤其涉及一種關聯對象追蹤方法及裝置。
背景技術
在移動設備操作系統iOS中,Object-C是一套面向對象的語言,具備面向對象的語言特性(封裝、繼承和多態),同時也具備靜態語言的特性,又有動態特性(動態類型、動態綁定和動態加載)。為了提高使用Object-C語言編程效率,需要查詢對象所對應的關聯對象、并分析對象的引用關系屬性。但是,現有技術采用的人工查詢并分析對象關聯的屬性,導致效率低下,而且并不能準確地獲取到強引用的關聯對象。
發明內容
本發明實施例提供一種關聯對象追蹤方法及裝置。可以提高查詢關聯對象的效率,以及提高獲取關聯對象的準確性。
本發明第一方面提供了一種關聯對象追蹤方法,包括:
調用開源工具動態修改操作系統底層中用于實現關聯對象的多個入口函數;
獲取當前對象,并在所述當前對象中加入強引用標識符;
通過所述多個入口函數創建所述當前對象所對應的臨時關聯對象;
從預設的關聯對象映射表中查找與所述臨時關聯對象對應的鍵值,確定所述鍵值是否存在于用于存儲關聯對象的哈希存儲表中;
若存在,則確定所述當前對象中的所述強引用標識符是否傳入所述臨時關聯對象中;
若確定所述當前對象中的所述強引用標識符傳入所述臨時關聯對象中,則確定所述臨時關聯對象為所述當前對象的強引用關聯對象。
其中,所述通過所述多個入口函數創建所述當前對象所對應的臨時關聯對象之前,還包括:
確定所述當前對象是否存在關聯對象。
其中,所述確定所述當前對象是否存在關聯對象包括:
獲取所述當前對象的結構體指針,并在所述結構體指針中查找目標變量的值;
根據所述目標變量的值,確定所述當前對象是否存在關聯對象。
其中,所述通過所述多個入口函數創建所述當前對象所對應的臨時關聯對象包括:
獲取所述當前對象所對應的關聯對象值;
判斷所述關聯對象值是否為空;
若所述關聯對象值不為空,則通過所述多個入口函數創建所述當前對象所對應的臨時關聯對象。
其中,所述獲取當前對象包括:
獲取所有對象,并將所述所有對象加入對象消息棧;
對所述對象消息棧中的所有對象進行出棧,獲取所述當前對象。
其中,所述調用開源工具動態修改操作系統底層中用于實現關聯對象的多個入口函數之前,還包括:
獲取所述操作系統底層的符號表系統,所述符號表系統包括所述所有對象。
相應地,本發明第二方面提供了一種關聯對象追蹤裝置,包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710383370.1/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種歌曲推薦方法及裝置
- 下一篇:導航問題的確定方法、裝置及存儲介質





