OC物件是結構體的驗證

lijingpei2016發表於2018-05-22

眾所周知,在oc裡是相容c和c++的,那麼oc物件是如何實現的呢,實際上也是用c和c++程式碼封裝好的

平常程式碼的實現流程如下: oc -> c或c++ -> 組合語言 -> 機器語言

驗證過程
1.在main函式裡建立一個NSObject類

image.png

2.然後開啟終端

執行 clang -rewrite-objc main.m -o main.cpp 命令 clang 是xcdoe自帶的外掛 -rewrite-objc 是重寫的意思 main.m 是檔案的名字 -0 輸出 main.cpp 輸出檔案的名字 cpp 是指 c plus plus 就是c++的意思 為什麼是c++? 因為生成的可能是c和c++混編的 所以c++為妥

然後會有這樣子的提示出來(64個警告)

image.png

然後我們在專案檔案裡可以看到新編譯出來的檔案

image.png

3.用xcode開啟 然後我們就可以找到main函式裡將obj轉成c和oc的程式碼片段了

image.png

當然了 我們還可以給程式碼瘦身一下 只生成在iPhone上的程式碼

命令如下:

xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main-arm64.cpp

xcrun xcoderun -sdk 指定執行的平臺

-arch 架構

image.png

4.然後我們開啟64.cpp檔案,搜尋 nsobject_impl

image.png

IMPL Implementation 就是實現的意思

struct 結構體的關鍵詞

相關文章