那曲檬骨新材料有限公司

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>通訊/手機編程>

使用Method Swizzling遇到的問題和項目中使用的Swizzling方案

大小:0.2 MB 人氣: 2017-09-22 需要積分:1

  導語:Method Swizzling是Objective-C中運行時中討論較多的內容,本文主要介紹使用Method Swizzling遇到的問題和項目中使用的Swizzling方案。

  一、Method Swizzling簡介

  Method Swizzling的本質是在運行時交換方法實現(IMP),如hook系統方法,在原有的方法中,插入自己的業務需求。

  1、Method Swizzling原理

  Objective-C的消息機制:在 Objective-C 中調用一個方法, 實際上是在底層通過 objc_msgSend()發送一個消息。 而查找消息的唯一依據是selector的方法名。

  //調用方法 [obj doSomething]; //[obj doSomething]本質上是給obj發doSomething消息 objc_msgSend(obj,@selector(doSomething))

  每一個OC實例對象都保存有isa指針和實例變量,其中isa指針所屬類,類維護一個運行時可接收的方法列表(MethodLists);方法列表(MethodLists)中保存selector的方法名和方法實現(IMP,指向Method實現的指針)的映射關系。在運行時,通過selecter找到匹配的IMP,從而找到的具體的實現函數。

  使用Method Swizzling遇到的問題和項目中使用的Swizzling方案

  MethodLists示意圖.png

  開發中可以利用Objective-C的動態特性,在運行時替換selector對應的方法實現(IMP),達到給hook的目的。下圖是利用Method Swizzling來替換selector對應IMP后的方法列表示意圖。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      百家乐怎样捉住长开| 金殿百家乐官网的玩法技巧和规则| 赌百家乐的玩法技巧和规则| 专业的百家乐官网玩家| 黄金城娱乐城| 百家乐如何洗吗| 誉博百家乐官网327589| 甘肃省| 太阳城俱乐部| 摩纳哥百家乐的玩法技巧和规则 | 注册娱乐城送彩金| 黄金城百家乐官网苹果版| 百家乐官网稳赢投注| 大发888游戏平台| 百家乐打印机破解| 百家乐有人赢过吗| 唐人街百家乐官网的玩法技巧和规则| 永利博百家乐官网游戏| 皇冠网店| 德州扑克保险| 海王星百家乐技巧| 百家乐澳门路规则| 奥斯卡百家乐官网的玩法技巧和规则| 娱乐城百家乐官网论坛| 网上现金游戏| 大发888娱乐城安装| 线上百家乐的玩法技巧和规则| 百家乐平注法口诀| 百家乐稳定打法| 百家乐官网园蒙特卡罗| 新葡京百家乐官网娱乐城 | 大发888娱乐城高手| LV百家乐赢钱LV| 百博百家乐的玩法技巧和规则| 988百家乐娱乐| 赌场百家乐欺诈方法| 澳门百家乐心得玩博| 网上赌百家乐被抓应该怎么处理| 百家乐官网筹码托盘| 58百家乐官网的玩法技巧和规则| 百家乐官网视频游戏中心|