《iOS基礎系列》id和void*的區別
阿新 • • 發佈:2021-08-09
本文內容參考自stackOverFlow,參考連結
id 和 void* 的區別
void *
- void * 表示對一些包含未輸入/未知內容的隨機記憶體快的引用,void *的一個常見且有效的用法是作為一個通過其他API傳遞的不透明資料引用。
id
- id 表示某個未知類的Objective-C物件的引用
區別
- 嘗試在void *型別的引用上呼叫方法將引發編譯器警告。嘗試呼叫id型別上的方法只有在編譯器看到的任何@interface宣告中沒有宣告被呼叫的方法時才會發出警告。
總結
- 因此,永遠不要將物件引用為void *。類似地,應該避免使用id型別變數來引用物件。儘可能使用最特定的類型別引用。甚至NSObject *也比id好,因為編譯器至少可以提供更好的方法呼叫驗證。