国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Runtime

2019-11-09 15:10:09
字體:
來源:轉載
供稿:網友

1、什么是Runtime?

RunTime即運行時。就是程序在運行的時候的一些機制,其中最主要的是消息機制。對于C語言,函數的調用在編譯的時候會決定調用哪個函數。編譯完成之后直接順序執行。而OC的函數調用基于消息發送,屬于動態調用,在編譯的時候并不能決定真正調用哪個函數(事實證明:在編 譯階段,OC可以調用任何函數,即使這個函數并未實現,只要聲明過就不會報錯。而C語言在編譯階段就會報錯)。只有在真正運行的時候才會根據函數的名稱找 到對應的函數來調用。

2、Runtime有什么用?

Runtime的強大在于它能夠在程序運行時獲取并修改類的各種信息,包括獲取某個類的方法列表、屬性列表、變量列表,為某個類動態添加方法、屬性,修改某個類的方法屬性等等;

3、OC Runtime Library 部分相關函數

OC有一個Runtime的運行時庫(Runtime Library),其中包含很多C語言函數,我們可以通過這些函數來動態對某個類(包括自定義類和系統類)進行動態操作;一些常用函數: 1.Method class_getInstanceMethod(Class cls, SEL name) 獲取類中方法聲明的指針 2.IMP class_getMethodImplementation(Class cls, SEL name) 獲取類中方法實現的指針 3.IMP class_replaceMethod(Class cls, SEL name, IMP imp,const char *types) 替換類中某個方法的實現函數 4.void method_exchangeImplementations(Method m1, Method m2) 交換兩個方法的實現函數 5.BOOL class_addMethod(Class cls, SEL name, IMP imp,const char *types) 為某個類動態添加一個方法 6.void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy) 為某個對象設置關聯值 7.id objc_getAssociatedObject(id object, const void *key) 獲得某個對象的關聯值

4、代碼示例

新建一個簡單的Car類,為它添加兩個對象方法:run方法和stop方法。 Car.h 這里寫圖片描述

Car.m 這里寫圖片描述

1、在ViewControllerViewDidLoad方法中,為Car類動態添加一個clean方法

這里寫圖片描述

Log這里寫圖片描述

2、交換Car類中的run方法和stop方法的實現

這里寫圖片描述

Log這里寫圖片描述

3、替換Car類中的run方法的實現為ViewController中clean方法的實現

這里寫圖片描述

Log這里寫圖片描述


上一篇:cmd命令常用記錄

下一篇:adb 環境創建

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁南县| 福清市| 新野县| 嘉义市| 化州市| 尖扎县| 承德市| 金沙县| 绥化市| 丹巴县| 和龙市| 囊谦县| 化德县| 抚远县| 湖州市| 盐城市| 桦南县| 普兰县| 武冈市| 崇明县| 来安县| 泽普县| 蒙山县| 海淀区| 临武县| 长治市| 临清市| 会宁县| 额济纳旗| 宾阳县| 台南县| 无棣县| 莱西市| 武鸣县| 襄城县| 齐河县| 峨边| 清镇市| 邹平县| 榆树市| 刚察县|