日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

runtime实现的机制是什么,怎么用,一般用于干嘛. 你还能记得你所使用的相关的头文件或者某些方法的名称吗?...

發布時間:2025/3/20 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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实现的机制是什么,怎么用,一般用于干嘛. 你还能记得你所使用的相关的头文件或者某些方法的名称吗?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。