眾所周知,在oc裡是相容c和c++的,那麼oc物件是如何實現的呢,實際上也是用c和c++程式碼封裝好的
平常程式碼的實現流程如下: oc -> c或c++ -> 組合語言 -> 機器語言
驗證過程
1.在main函式裡建立一個NSObject類
![image.png](https://i.iter01.com/images/9750fa105b90474693289c24c3ae227d6138e5569358eeb8bf6bc4f3a855625c.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](https://i.iter01.com/images/82290633f2b12230731662ce20367a2b81f07b1f9957f7dd2e7b97cebc2f043c.png)
然後我們在專案檔案裡可以看到新編譯出來的檔案
![image.png](https://i.iter01.com/images/50e0160308965502472315cb512a743852cd0c5f0e68add1a360267b5c3472f9.png)
3.用xcode開啟 然後我們就可以找到main函式裡將obj轉成c和oc的程式碼片段了
![image.png](https://i.iter01.com/images/e27c92faa4a4eb14510e1fd59a6742bb01d24caca81fe8502ae66b6749919043.png)
當然了 我們還可以給程式碼瘦身一下 只生成在iPhone上的程式碼
命令如下:
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main-arm64.cpp
xcrun xcoderun -sdk 指定執行的平臺
-arch 架構
![image.png](https://i.iter01.com/images/aa8ea3942d753514dc960bf4187beef7a2d29d89b4dc6a13308a947c8c5c8ca0.png)
4.然後我們開啟64.cpp檔案,搜尋 nsobject_impl
![image.png](https://i.iter01.com/images/b66ad3f58ce729b4dea671df6c16995e4d208070a46d3ffefd5ee2e7d373f9b6.png)
IMPL Implementation 就是實現的意思
struct 結構體的關鍵詞