OC方法呼叫過程

2021-08-26 05:21:49 字數 2063 閱讀 2322

@inte***ce person : nsobject

- (void)personmethod;

+ (void)personclassmethod;

@end

@implementation person

- (void)personmethod {};

+ (void)personclassmethod {};

@end

person新建的物件是怎樣去呼叫物件方法personmethod

instance物件的isa指向class。

當呼叫物件方法時,通過instance的isa找到class,再找到物件方法進行呼叫(因為物件方法儲存在class中)。

person新建的物件是怎樣去呼叫類方法personclassmethod

instance物件的isa指向class。

class物件的isa指向class。

meta-class物件的isa指向基類的meta-class物件,再找到類方法進行呼叫(因為類方法儲存在元類物件中)。

@inte***ce student : person

- (void)studentmethod;

+ (void)studentclassmethod;

@end

@implementation student

- (void)studentmethod {};

+ (void)studentclassmethod {};

@end

現有student物件繼承於person物件。student->person->nsobject

student新建的物件呼叫自身的類方法和物件方法過程和上面的person一致

student新建的物件是怎樣呼叫父類person中的物件方法personmethod

通過student的例項物件的isa指標找到student的class。

在student的class內部找是否存在- (void)personmethod;方法。

不存在,通過student的class內的superclass找到person的class。

在person的class內部找是否存在- (void)personmethod;方法,存在則呼叫方法

student新建的物件是怎樣呼叫父類person中的類方法personclassmethod

通過student的例項物件的isa指標找到student的meta-class。

在student的meta-class內部找是否存在- (void)personclassmethod;方法。

不存在,通過student的meta-class內的superclass找到person的meta-class。

在person的class內部找是否存在- (void)personclassmethod;方法,存在則呼叫方法

student新建的物件是怎樣呼叫nsobject中的類方法[student load]

通過student的例項物件的isa指標找到student的meta-class。

在student的meta-class內部找是否存在+ (void)load;方法。

不存在,通過student的meta-class內的superclass找到person的meta-class。

在person的class內部找是否存在+ (void)load;方法。

不存在,通過person的meta-class內的superclass找到nsobject的meta-class。

在nsobject的meta-class內部找是否存在+ (void)load;方法,存在則呼叫。

驅動呼叫過程

驅動呼叫過程 剛接觸到linux下驅動程式設計,一般都是照著模式寫 或是修改一下已有原始碼,對驅動的呼叫過程並不是很熟悉。在網上不斷的 算是有點明白了,現在我就說下自己的了解。我們載入驅動模組後都會做乙個工作,就是通過mknod在 dev資料夾下建立乙個裝置檔案 如mknod dev c major...

probe呼叫過程

這幾天搞ti的vpfe,裡面裝置的註冊使用platform,平台裝置註冊方式來註冊的。一直都知道 cpp view plain copy print 112 struct device driver 裡的probe函式,但是不知道是何時被呼叫的。經過跟蹤 在module init vpfe init...

函式呼叫過程

每乙個未執行完的函式都對應著乙個棧幀,系統為單個函式分配的那部分棧空間就叫做棧幀,棧幀儲存了函式的資訊。以下面的 為例,通過彙編 的執行過程介紹棧幀建立和銷毀的過程 include int add int x,int y int main 從main函式建立自己的棧幀開始 其他內容先忽略 初始狀態 ...