執行時是 oc 的核心,其特點就是程式在執行的時候,以傳送訊息的形式呼叫方法.
在實際開發中,關於執行時方面的運用點,其實並不多,最常用的也無非是動態獲取物件的屬性.
示例:1.新建乙個繼承自nsobject 的物件,在. h 檔案宣告2個屬性
#import
@inte***ceperson :
nsobject
@property(nonatomic, copy)
nsstring
*name;
@property(nonatomic, assign)
nsinteger
age;
@end
2.新建乙個 nsobject 的類別
.h 檔案
#import
@inte***ce nsobject (runtime)
+(nsarray*)zyfobjproperties;
@end
.m 檔案
#import "nsobject+runtime.h"
#import
@implementation nsobject (runtime)
+(nsarray *)zyfobjproperties
nslog(@"屬性的個數 %d", count);
free(prolist);
return marr.copy;
}@end
3.匯入新建的類和分類,然後呼叫
nsarray *properties = [person
zyfobjproperties];
nslog(@"%@",properties);
注意, c語言的 copy 後,需要釋放,oc 在執行時是不會對 c 做自動記憶體管理的.
OC 最實用的Runtime 總結
什麼是runtime?runtime 是 oc底層的一套c語言的api 引入 或 編譯器最終都會將oc 轉化為執行時 通過終端命令編譯.m 檔案 clang rewrite objc m可以看到編譯後的 cpp c 檔案 比如我們建立了乙個物件 nsobject alloc init 最終被轉換為幾...
OC的Runtime(執行時)機制的解析
objective c中的runtime是經常被問到的乙個問題,幾乎是面試大公司必問的乙個問題。當然還有一些其他問題也幾乎必問,例如 runloop,block,記憶體管理等。其他的問題如果有機會我會在其他文章中介紹。本篇文章主要介紹runtime。runtime簡稱執行時。就是系統在執行的時候的一...
對RunTime的一點認識
runtime簡稱執行時,是執行時的一些機制,最主要的是訊息機制。因為oc中只有物件能傳送訊息,所以一般以objc開頭。對於c語言,函式在編譯是就會決定呼叫,而oc中不會,oc的函式屬於一種動態呼叫。舉例說明,oc中只宣告乙個方法並不去實現它,然後直接呼叫,編譯奪得時候不會報錯,只有在執行時報錯。類...