Objective-C 被稱為 C 語言的 superset. 就是在 C 上面再加上物件導向的設計. 基本上 Objective-C 使用與 C 一樣的的語法, 能處理 Objective-C 的 compiler 也一定能處理 C. 在 Objective-C 的程式碼中也可以任意加入 C 的程式碼, 但同時也要避免破壞物件導向的設計. GNU GCC 3.x 已經完整支援 Objective-C, 因此建議使用 GCC 3.x 版本, 而且版本數愈高愈好.
標準的 Objective-C 語法可以在此, 也有電子書可下載. Objective-C 是在 C 上面再定義 Class 等常見的物件導向特性. 因此懂一些物件導向的概念, 再加上有 C 語言的基礎, Objective-C 就不難了.
Objective-C 很接近 Java, 比 C++ 精簡許多. 許多概念是從 SmallTalk 學來的. 在這裡重點介紹一下 Objective-C 的一些特色和要注意的地方.
- 單一繼承. 和 Java 一樣, 只能有一個 superclass. C++ 可以有很多個.
- Message. 在 C++/Java 中還是使用 function call. 也就是 Object.function(argument) 的方式, 在 Objective-C 中稱為 message,格式為 [Object method:message]. 除了格式上的不同, message 使用了 dynamic binding, 在執行 (Runtime) 時才處理, 而不是在編譯 (compile) 的時候處理.
- Category. 如果想要在既有的 Class 中增加一些功能 (Function/Method), 在 Java/C++ 中的做法就是做一個 Subclass 來繼承這個 Class, 把新的函數加在這個 Subclass. 在 Objective-C 中, 可以把原來的 Class 加上一些 Category, 也就是新的函數, 這樣子原來的 Class 就會多出新的函數出來. 好處是不用創造新的 Sublass, 但是 Category 不能增加新的變數 (Subclass可以), 只能增加新的函數.
- Protocol. 就和 Java 的 Interface 一樣, 用來補足沒有多重繼承的問題.