@inte***ce person : nsobject
- (void)personmethod;
+ (void)personclassmethod;
@end
@implementation person
- (void)personmethod {};
+ (void)personclassmethod {};
@end
person新建的物件是怎樣去呼叫物件方法personmethod
instance物件的isa指向class。person新建的物件是怎樣去呼叫類方法personclassmethod當呼叫物件方法時,通過instance的isa找到class,再找到物件方法進行呼叫(因為物件方法儲存在class中)。
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新建的物件是怎樣呼叫父類person中的類方法personclassmethod在student的class內部找是否存在- (void)personmethod;方法。
不存在,通過student的class內的superclass找到person的class。
在person的class內部找是否存在- (void)personmethod;方法,存在則呼叫方法
通過student的例項物件的isa指標找到student的meta-class。student新建的物件是怎樣呼叫nsobject中的類方法[student load]在student的meta-class內部找是否存在- (void)personclassmethod;方法。
不存在,通過student的meta-class內的superclass找到person的meta-class。
在person的class內部找是否存在- (void)personclassmethod;方法,存在則呼叫方法
通過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函式建立自己的棧幀開始 其他內容先忽略 初始狀態 ...