1. 程式人生 > >C呼叫OC方法

C呼叫OC方法

從彙編角度來看:無論是C函式或者是OC方法,他們同樣都是一個函式的地址。區別在於:C函式呼叫直接通過 函式名(引數)找到函式指標,直接執行函式地址,不需要考慮其他問題,只要定義好就能直接用.   OC 是屬於類的方法,結構上多了一層封裝性,要調方法必須要找到 類的地址然後再通過類的地址找到方法的地址,然後再執行函式地址。那麼:如何能夠在C函式裡面呼叫OC的方法呢?答案就是:指定一個全域性變數來儲存類的地址,在通過類的地址找到類方法(函式)的地址呼叫。

新建一個xcode工程,我們在ViewController.m​檔案中定義一個全域性靜態變數指標用於儲存當前類的地址,如圖:

​接著我們在viewDidLoad中將指標指向我們剛剛定義的靜態變數,這樣我們定義的MyView就相當於self。因為self指的是當前類的地址,而我們把類的地址給了全域性的MyView,所以在C函式裡使用MyView,就相當於在Oc的方法中使用self是一個道理。如圖:

接著我們寫一個oc的方法,如圖:

然後我們再寫一個C的函式:來呼叫我們剛剛的oc方法,如圖:​

​最後我們在可以在viewDidLoad中掉用我們的C方法,我們就可以在控制檯看到NSLog的輸出語句了。

完美!