runtime实现的机制是什么,怎么用,一般用于干嘛. 你还能记得你所使用的相关的头文件或者某些方法的名称吗?...
運行時機制,runtime庫里面包含了跟類、成員變量、方法相關的API,比如獲取類里面的所有成員變量,為類動態添加成員變量,動態改變類的方法實現,為類動態添加新的方法等 需要導入<objc/message.h><objc/runtime.h>?
?
1.是什么
1> runtime是一套比較底層的純C語言API, 屬于1個C語言庫, 包含了很多底層的C語言API
2> 平時編寫的OC代碼, 在程序運行過程中, 其實最終都是轉成了runtime的C語言代碼, runtime算是OC的幕后工作者
3> 舉例:
OC :
[[MJPerson alloc] init]
?
runtime :
objc_msgSend(objc_msgSend("MJPerson" , "alloc"), "init")
?
2.用過么? 怎么用?
1> runtime是屬于OC的底層, 可以進行一些非常底層的操作(用OC是無法現實的, 不好實現)
* 在程序運行過程中, 動態創建一個類(比如KVO的底層實現)
* 在程序運行過程中, 動態地為某個類添加屬性\方法, 修改屬性值\方法
* 遍歷一個類的所有成員變量(屬性)\所有方法
?
3.相關的頭文件和函數
1> 頭文件
* <objc/runtime.h>
* <objc/message.h>
?
2> 相關應用
* NSCoding(歸檔和解檔, 利用runtime遍歷模型對象的所有屬性)
* 字典 --> 模型 (利用runtime遍歷模型對象的所有屬性, 根據屬性名從字典中取出對應的值, 設置到模型的屬性上)
* KVO(利用runtime動態產生一個類)
* 用于封裝框架(想怎么改就怎么改)
?
3> 相關函數
* objc_msgSend : 給對象發送消息
* class_copyMethodList : 遍歷某個類所有的方法
* class_copyIvarList : 遍歷某個類所有的成員變量
* class_.....
?
4.必備常識
1> Ivar : 成員變量
2> Method : 成員方法
?
轉載于:https://www.cnblogs.com/changxs/p/runtime.html
總結
以上是生活随笔為你收集整理的runtime实现的机制是什么,怎么用,一般用于干嘛. 你还能记得你所使用的相关的头文件或者某些方法的名称吗?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [部署]VM11下CentOS7mini
- 下一篇: ubuntu下eclipse新建项目没有