1. 程式人生 > 其它 >《iOS基礎系列》id和void*的區別

《iOS基礎系列》id和void*的區別

本文內容參考自stackOverFlow,參考連結

id 和 void* 的區別

void *

  • void * 表示對一些包含未輸入/未知內容的隨機記憶體快的引用,void *的一個常見且有效的用法是作為一個通過其他API傳遞的不透明資料引用。

id

  • id 表示某個未知類的Objective-C物件的引用

區別

  • 嘗試在void *型別的引用上呼叫方法將引發編譯器警告。嘗試呼叫id型別上的方法只有在編譯器看到的任何@interface宣告中沒有宣告被呼叫的方法時才會發出警告。

總結

  • 因此,永遠不要將物件引用為void *。類似地,應該避免使用id型別變數來引用物件。儘可能使用最特定的類型別引用。甚至NSObject *也比id好,因為編譯器至少可以提供更好的方法呼叫驗證。
時間並不會因為你的迷茫和遲疑而停留,就在你看這篇文章的同時,不知道有多少人在冥思苦想,在為演算法廢寢忘食,不知道有多少人在狂熱地拍著程式碼,不知道又有多少提交一遍又一遍地重新整理著OJ的status頁面…… 沒有誰生來就是神牛,而千里之行,始於足下!