本書簡介
大部分 Objective-C 書籍假定讀者已經購買 Mac 主機,以撰寫 iOS、masOS 軟體為目標。在實務上,這樣的假定是正確的。但若讀者尚未購買 Mac 電腦,只是想先學 Objective-C,這張入場券實在是太昂貴了。
因此,除了使用 Xcode 等 macOS 專有開發工具外,本書加上了 GNUstep 物件庫相關的內容。由於 GNUstep 在 Windows 及 GNU/Linux 上皆可安裝,讀者就不需要額外購買新的電腦主機,可以用相對小的成本來學習 Objective-C。學會了再買 Mac 電腦也不遲。
比起 macOS 所用的 Clang,其他平台所用的 GCC 只是少了一些新的語法特性,兩者寫出來的 Objective-C 程式碼是相通的。使用 GNUstep 學 Objective-C 可視為學習 Objective-C 的先修班。實務上甚少程式設計者會將 GNUstep 當成主要開發平台,但這不妨礙 Objective-C 的學習。
由於 Objective-C 是 C 的嚴格超集合,本書兼具 C 和 Objective-C 的內容,讀者不用另外購買 C 的學習教材。
試讀本書
如果讀者想試讀本書,可在以下連結下載試讀本:
- PDF 試讀本:適用於 Acrobat Reader 等電子書閱讀軟體
- ePub 試讀本:適用於 Kobo eReader、mooInk eReader 等電子書閱讀裝置
- MOBI 試讀本:適用於 Amazon Kindle 等電子書閱讀裝置
使用試讀本的用意在於確認自己的閱讀軟體或閱讀裝置是否是否能順利閱讀本書,以做為購買本書的依據,不只是試讀其內容。
購買本書時可同時取得上列三種檔案格式的電子書,應可滿足絕大部分的閱讀需求。
購買本書
以 PDF 版本來計算,本書共有 330 頁。
本書價格為 8.6 美元 (註) 。這個價格同時包含 PDF、ePub、MOBI 三種版本的電子書及購買日起一年的更新版本。
(註) 本書在 Gumroad 上採訂閱制是為了提供有限期更新服務。在訂閱期結束後會自動結束訂閱。
本書內容
本書包含以下內容:
- Objective-C 簡介
- 建置 Objective-C 開發環境
- macOS:使用 Clang 搭配 Cocoa
- Windows:使用 GCC 搭配 GNUstep
- GNU/Linux:使用 GCC 搭配 GNUstep
- 在命令列使用 Clang 或 GCC
- 使用 GNUstep Make 管理專案
- 基礎概念
- 資料型態 (data type)
- 變數 (variable)
- 使用 Objective-C 物件
- 運算子 (operator)
- 選擇控制結構 (selection control structure)
- 迭代控制結構 (iteration control structure)
- 指標 (pointer) 和記憶體管理 (memory management)
- 陣列 (array)
- 字典 (dictionary)
- 集合 (set)
- 字串 (string)
- 結構體 (structure)
- 聯合體 (union)
- 列舉 (enumeration)
- 函式 (function)
- 巨集 (macro)
- 多檔案程式專案
- 類別 (class) 和物件 (object)
- 封裝 (encapsulation)
- 繼承 (inehritance)
- 多型 (polymorphism)
- 元程式 (metaprogramming)
- 錯誤處理 (error handling)
- 記錄 (logging) 和斷言 (assertion)
- 基本輸出入 (basic input and basic output)
- Objective-C 運行期函式庫 (runtime library)
- 在 Objective-C 中混入 C++ 程式碼
- 不使用 Foundation 寫物件
- 附錄:在非蘋果平台上使用 Block 敘述
- 附錄:實用的 Objective-C 巨集
- 附錄:Objective-C 相關的開發工具
本書內容兼具 Objective-C 和 C,但使用 Objective-C 比使用純 C 更好時,本書的範例程式會優先使用 Objective-C 所提供的特性。所以,在本書的早期就可以看到使用 Objective-C 特性的程式碼,而非先 C 再 Objective-C。
另外,本書著重在 Objective-C 本身,不會侷限讀者一定要用 Xcode。甚至會額外說明在命令列環境編譯 Objective-C 程式碼的方式。透過這樣的內容,讓讀者不受限於特定開發工具,真正從語言本質上學習 Objective-C。
版本演進
1.2.2
- 更新一些文字
1.2.1
- 更新一些文字
1.2.0
- 改寫附錄的內容
- 在 Apple 晶片的 Mac 電腦上重新檢查和修改所有範例程式碼
1.1.1
- 修改和修正少量文字
1.1.0
- 改寫附錄的內容
1.0.0
- 首次發佈
常見問題
市面上已經有好幾本 Objective-C 語言教材了,這本書有什麼不同?
大部分 Objective-C 教材假定讀者擁有 Mac 主機並使用 Xcode 撰寫 Objective-C 程式。但本書也會說明在非蘋果平台上使用 GNUstep 寫 Objective-C 程式的方式。在完全不會 Objective-C 時就購買昂貴的 Mac 主機是風險過大的投資。
此外,為了確保 Objective-C 程式碼的相容性,本書的範例程式會各自使用 Clang 和 GCC 編譯一次。在書中也會註明 Clang 限定的 Objective-C 語法。本書的目標是在多個平台上撰寫 Objective-C 程式,不會侷限在蘋果平台。
大家都在學 Swift,學 Objective-C 有用嗎?
由於大量蘋果軟體依賴於使用 Objective-C 的系統 API,Objective-C 仍然是可學的語言。現在是 Swift 和 Objective-C 兩種技術並存的狀態。這個狀態應該會持續一段長時間。
實務上,現存軟體不會刻意用 Swift 重寫,而會繼續用 Objective-C 去維護。用 Objective-C 寫 binding 比用 Swift 更簡單。有些跨平台行動框架,還是會用 Objective-C 來寫蘋果平台特有程式碼,而不會使用 Swift。所以,Objective-C 仍然是有用的技術。
看完這本書就會寫蘋果 App 嗎?
要寫蘋果 app,除了要熟悉 Objective-C 外,還要學習 Cocoa 物件庫。本書的目標是學習前者,僅會提及一些 Cocoa 中可見的基礎類別。
有些 Cocoa 的書籍也會提到 Objective-C 的部分,但語法相關的內容相對少,難以打下穩固的基礎。由於學習蘋果 app 時著重在圖形界面程式的寫法,這應該是熟悉 Objective-C 和 Foundation 物件庫後才去學習的。
Mac 電腦已經改用蘋果晶片 (Apple Silicon) 了,這本書還能用嗎?
這本書的範例程式碼均已在使用蘋果晶片的 Mac 電腦上檢查、編譯、執行,確認程式可正常運作。
GNUstep 是可用的物件庫嗎?
GNUstep 比較小眾,但 GNUstep 的確是可用的。一般來說,大部分系統支援基礎物件庫,但不一定支援圖形物件庫。所以可以把 Objective-C 及 GNUstep 當成有物件系統及常用物件庫的強化版 C 語言來用。
注意事項
這個網站就可以免費看到本書的內容,為什麼要花錢購買電子書?
的確如此,本書部分內容可在這個網站上看到。然而,由於各種技術面的問題,本網站的內容不一定可隨時存取。像是網路斷線、網站當機等,都會造成本網站無法使用。
當你購買本書時,就可以離線存取本書所提供的內容,或者是用電子書閱讀器舒適地閱讀本書,不會受到網路存取的限制。即使本網站因故未能繼續營運,你還是可以永久保存這本書所要傳達的內容。
為了讓讀者有更好的閱讀體驗,我們在製作電子書時,做了以下更動:
- 改寫和新增一些內容
- 重排部分範例程式碼
- 在電子書閱讀器上實測本書
為什麼這本書在我的閱讀軟體或閱讀裝置上看起來很醜?
在電子書常見的檔案格式中,PDF 和 ePub 是開放格式,而 MOBI 是專有格式。但電子書實際呈現的效果,仍會受到閱讀軟體或閱讀裝置的實作的影響。產出合乎標準的電子書並無法保證電子書在所有閱讀器上都能順利閱讀,這是無可奈何的事實。
著眼於此議題,與其由筆者逐一地測試市面上各種電子書閱讀器,不如讓讀者在自己實際使用的閱讀器上測試,故本書提供試讀本。試讀本不僅用來試讀電子書的內容,同時也可以測試電子書在實體裝置上的呈現效果。
網站的頁面會持續更新,但電子書的內容可能會過時
資訊類的書籍大抵上都很容易過時,有些資訊書籍的技術生命可能少於三年。雖然,比起大部分的技術,Objective-C 是相對穩定的,本書也無法完全免除資訊圖書的宿命。
為了補償願意付費支持本網站的讀者,本書採用有期限訂閱制。當你購買本書後,可在購買日起一年內取得本書的更新版本。實際的訂閱機制以 Gumroad 所提供的方案為準。
我的訂閱過期了,需要再重新續訂嗎?
本書的更新記錄會公告在此頁面上,讀者可根據這些資訊自行決定是否要重新訂閱。如果不想重新訂閱的話,讀者仍可永久保存舊版本的電子書。
書本有用 DRM (Digital Rights Management) 嗎?
本書沒有上 DRM,但有一些保護措施來避免讀者散布本書。由於本書沒有使用 DRM,讀者可視需求自行備分本書的電子檔案。
我後悔了,可以退費嗎?
當你購買本書後,你已經取得本書的永久拷貝。退費會使得這本書自動變成免費的,所以我們無法這麼做。
實際上,你購買的是離線使用本書的權利。本書一部分的內容可以在這個網站上看到,雖然網頁上的內容和電子書有些差異。此外,我們還提供試讀本,讓你可以充份地測試,確認本書可在你的閱讀器上順利運作後才購買。所以,你應該有足夠的資訊來決定要不要購買本書。
你們有提供紙本書 (Dead-Tree Copy) 嗎?
筆者比較建議直接在電腦或電子書閱讀器上觀看本書,因為這樣可以少砍一些樹。
不過,有些讀者仍然習慣閱讀紙本書。如果讀者真的想要觀看本書籍的紙本版本的話,請購買本書的電子版本後自行列印成紙本書籍即可。在自用的前提下,我們允許讀者自行印書。但勿將印出的書本散布或販賣。
承上,我們不提供寄送紙本書籍的服務,因為這樣會增加額外的成本 (印刷、包裝、運送等),這並不是筆者樂見的情境。
購買本書
以 PDF 版本來計算,本書共有 330 頁。
本書價格為 8.6 美元 (註) 。這個價格同時包含 PDF、ePub、MOBI 三種版本的電子書及購買日起一年的更新版本。
(註) 本書在 Gumroad 上採訂閱制是為了提供有限期更新服務。在訂閱期結束後會自動結束訂閱。