2012/03/23

Objective-C與iOS的學習資源

問:學習Objective-C的書籍?
答:

Learn Objective–C on the Mac by Mark Dalrymple and Scott Knaster, Apress.
這本的內容是Objective-C跟一些基本的Cocoa Foundation Framework,是學習Objective-C的入門書,這本書假設你已經有C語言的基礎,所以不適合沒有任何程式語言基礎的人看。本書在我認為這是本很棒的書,平易近人,值得推薦。

另外,本書出版日期是2008.12,是在Mac OS X Snow Leopard v10.6(2009.08)之前,也就是說,本書沒有講Objective-C新加入的功能與特色,譬如block(在OS X v10.6與iOS 4.0才有)。

這本書有第二版了,書名為Learn Objective-C on the Mac: For OS X and iOS,出版日期2012.06,太棒了,包含了所有新特色新功能,block、ARC、等等。

Programming in Objective-C 2.0 2nd Edition by Stephen G. Kochan, Addison-Wesley.
這本的作者認為太熟C反而妨礙以Objective-C的方式去思考,所以不假設你會C。在很久以前,講Objective-C的書籍似乎只有這一本,所以那時很多人也只能看這本。我認為這本寫的中規中矩,不錯,而且不斷地更新。這本書有官方論壇,作者會親自回答問題喔。

第二版有中文翻譯本
第三版已經在2011.06出版囉,有講block。
第四版已經在2011.12出版囉,有講block與ARC。有中文翻譯本:精通Objective-C 程式設計 第四版
第五版已經在2012.12出版囉,中文翻譯本:精通 Objective-C 程式設計 第五版

Learning Objective-C 2.0: A Hands-On Guide to Objective-C for Mac and iOS Developers by Robert Clair,也是學習Objective-C不錯的入門書,裡面有介紹剛剛進入mac os x與iOS的開發環境,需要熟悉的一些基本東西與觀念,例如什麼是bundle、framework、AppKit、Core Foundation等等,前面兩本的重心都是放在Objective-C上,這本則加入了開發iOS的基礎知識,算是不錯的選擇。

Objective-C for Absolute Beginners: iPhone and Mac Programming Made Easy by Gary Bennett, Brad Lees, and Mitchell Fisher, Apress.
看到這本書的書名你就能猜到,專門為想寫iPhone與Mac軟體的初學者入門書,從最基本教起,譬如說書一開始還講解什麼是演算法、什麼是軟體開發流程、什麼是bit、十進位與二進位的轉換等等,但頁數卻不到三百,也就是說,講的都非常簡單非常基本。呃,我不會推薦你看這本。

Objective-C Phrasebook by David Chisnall, Addison-Wesley.
使用Objective-C寫程式,多年以後,自然而然會有慣用法、經驗累積、最佳的程式片段,這本書就是作者的心得精華,裡面每一章都很短,範例程式也很短,內容涵蓋Objecitve-C執行週期程式庫、記憶體管理、property lists、key-value coding、各種基本的類別(數字、字串、陣列、日期時間等等)。不錯的書。

Pro Objective-C Design Patterns for iOS by Carlo Chung, Apress.
這本書就是講GoF Design Patterns裡面的那23個設計範式,只不過改以Objective-C來表達,並以iOS的Cocoa Touch為基礎,書裡的程式碼都是要在Xcode與iOS SDK上跑的。

Cocoa Design Patterns by Erik M. Buck與Donald A. Yacktman,Addison Wesley 2009年9月出版。沒看過,看書名應該是Mac上的Cocoa的設計模式。


Cocoa設計模式,譯者賀以翔、林銘鴻、吳國慶,上奇2011年12月出版。上一本的中文譯本。

Pro Objective-C for Mac and iPhone by Michael Ash and James Dovey, Apress. 尚未出版。看起來應該是進階的書。

Objective-C For Dummies by Neal Goldstein, For Dummies. 沒看過。

Objective-C Programming: The Big Nerd Ranch Guide by Aaron Hillegas and Mark Fenoglio, Addison-Wesley。
這本書應該是寫給沒碰過C、沒碰過Objective-C、沒碰過Xcode、沒碰過iOS的人看的,不到300頁的篇幅,卻要介紹這麼多東西,很厲害,言簡意賅,不廢話。作者的目的應該是打算用最少篇幅引人入門,安裝Xcode、學習基本的C語言、然後是Objective-C與Foundation framework,然後是建立iOS與Mac應用程式,頁數不多,所以講的都是最基本最重要的。
我個人不太喜歡這樣的書籍,因為我還是要再買一本好好介紹Objective-C的書、還是要再買一本講解開發iOS的書。不過這本的優點是,不到300的頁數,很快就能翻過一遍,就能對iOS開發需要的程式能力有基本的概念,不錯。

詳解 Objective C─iPhone / iPad / Mac OS X 標準程式設計與實作 by 荻原剛志,博碩出版。日文翻譯過來的,沒看過。

Objective-C 2.0 iPhone/iPad/Max OS X 程式設計講座,荻原剛志 著、鄭英龍、連軒甫 譯,博碩。上一本的更新版,加入Objective-C 2.0的新功能。

學會 Objective-C 的 24 堂課─撰寫 iPhone 應用程式的初體會,第二版,by 蔡明志,碁峰出版。
寫的中規中矩,可以考慮。本書從C語言介紹起,然後是Objective-C,然後是一些Foundation Framework,最後有一章的篇幅稍微介紹iPhone的開發。
本書第二版雖然在封面上印上"針對XCode 4.x全新改版",但我只發現iPhone那一章更新了。關於Objective-C的部份應該沒變。沒有介紹Objective-C的新功能:block、Automatic Reference Counting(ARC),沒有Interface Builder的新功能storyboard。

Objective-C 與 iOS 開發入門 by Michael Pan 潘聖文,藍海文化出版。
這本書約400頁,其中300頁左右介紹iOS開發,100頁左右介紹Objective-C,應該是為了介紹iOS的部份,所以才特別加上介紹Objective-C那部分,光就此書有涵蓋的內容來看,寫的還算不錯,但是篇幅不夠,以致於Objective-C講的太少;iOS的部份還OK,但300頁不太夠。我是覺得有點可惜了,被篇幅限制住了。

輕鬆學 Objective C-開發你的 iPhone/iPad 應用程式 by 楊正洪、鄭齊心、李建國,上奇出版。
簡體版翻譯過來的,裡面有少數幾個名詞依然是大陸用語,不過應該不影響閱讀。這本以Objective-C與Foundation Framework為主,只有一兩章才是iOS開發。我只有翻閱過,不能做評論,大家到書店翻翻看合不合胃口吧。

Objective-C 2.0 Essentials,可線上閱讀的著作,但不全,可購買完整版,內容範圍很廣。

這邊有一張Objective-C的小抄,Ray Wenderlich寫的。


然後看Apple文件(免費下載或線上閱讀),這些算是官方文件,內容精鍊,有疑惑時都要來這裡。
The Objective-C Programming Language,對語言本身有什麼疑義,找這裡就對了。
Memory management Programming Guide,Cocoa(Foundation+AppKit)的物件記憶體管理通則。
Objective-C Runtime Programming Guide,除了語言(compiler)外,還要有runtime環境,這文件告訴你Objective-C在執行時需要的支援,message forwarding的機制,dynamic method resolution的機制等等。
Objective-C Runtime Reference,上一份文件的補助,參考文件,詳列runtime library中實作的函式。
Object-Oriented Programming with Objective-C,顧名思義,Objective-C與物件導向。

這裡CocoaChina Wiki有把一些蘋果官方文件翻譯成中文。


問:Objective-C有1.0與2.0之分?
答:在2007.10,Apple推出Mac OS X 10.5,也推出Objective-C 2.0,目前只有Xcode中的compiler(Apple修改過的gcc)以及clang(llvm)能夠吃2.0,也只有Mac OS X 10.5, iPhone, iPad的runtime環境可以跑2.0。

2.0多了這些東西:garbage collection、properties、non-fragile instance variables、fast enumeration。

另外,後來Objective-C又加入新的功能特色block與ARC(automatic reference counting)。

PS 嚴格說來,block應該算做C語言的擴充功能。

問:有線上的教學文件嗎?
答:網路上可以找到很多,請自行判斷優劣。

問:優良的部落格?
答:Cocoa ManifestCocoa With LoveCocoa SamuraiMatt GemmellCocoa Is My Girlfriendmikeash的NSBlog

問:還有問題怎麼辦?
答:網路上有很多Q&A論壇,譬如Stack Overflow,這網站上有很多人討論iOS軟體開發。

問:想在iOS(iPhone, iPod Touch, iPad)上開發,有何教學文件?
答:

1. The iOS 5 Developer's Cookbook: Core Concepts and Essential Recipes for iOS Programmers by Erica Sadun。
學習iOS軟體開發不錯的入門書,從iOS SDK 2.x開始一直更新到現在的iOS 6.x。從基本講起,範圍廣泛,這本範例很多。

iOS 5的中文翻譯本,書名是"iOS SDK 開發範例大全"。

iOS 6的原文書The Core iOS 6 Developer's Cookbook,於2012年12月出版。
注意:此次改版,作者Erica與出版社將iOS軟體開發分成三本書:

導論、介紹Objective-C、介紹Xcode、App如何上架、UIKit的基本功夫(視圖、控制器、基本視覺元件),大致上就是前一版(iOS 5那本)的第1~7章,獨立出來放在Learning iOS 6: A Hands-on Guide to the Fundamentals of iOS Programming裡,預計在2013年7月出版,約600頁。

而The Core iOS 6 Developer's Cookbook這本,內容包含觸碰與手勢、自訂控制元件、各種UIKit元件、視圖與動畫、文字輸入、常用控制器、表格視圖、捲動、畫面編排、等等iOS開發的核心知識,以及初階介紹Core Data與網路連線,約570頁。詳細目錄在此

進階內容在The Advanced iOS 6 Developer's Cookbook裡,預計在2013年3月出版,約500頁,內容包含Store Kit、Game Kit、Core Location、各種特殊用途的軟體開發框架。

2. Beginning iOS 5 Development: Exploring the iOS SDK by David Mark, Jack Nutting, Jeff LaMarche。
這本是學習iOS不錯的入門書,不斷地改版更新,從一開始的iPhone OS 2.x、3.x,到現在的iOS 4.x、5.x、6.x版。
iOS 4有中文翻譯本
iOS 5的中文翻譯本出版了,書名是"探索 iOS 5 程式開發實戰"。
iOS 6的原文書,預計在2013年1月出版。

這本書的姊妹作為More iOS 6 Development: Further Explorations of the iOS SDK,2012年12月出版,內容比較進階。

3. iOS Programming: The Big Nerd Ranch Guide by Joe Conway and Aaron Hillegass。
也是學習iOS軟體開發的入門書,內容風格與前兩本不同,請讀者自行翻閱看看,看看哪本比較適合您。

Third Edition內容涵蓋iOS 5與Xcode 4.3,於2012年3月出版。

4. 美國史丹佛大學跟蘋果公司合作開課。iPhone Application Development (Winter 2010),YouTube上課錄影或是到iTunes上,這裡有投影片與作業,這邊有Inside網站刊載的心得筆記(中文)。這課程還有繼續開,但最新的上課內容並沒有開放出來。

5. 熱心人士自己錄製的教學錄影Learning iOS Development,放在YouTube上。

6. 其他,自己找找囉,這篇列出32個開發資源網站,非常棒。

問:有哪些線上資源、網站或部落格?
答:

1 comment:

  1. http://www.appcoda.com/ios-programming-course/
    免費線上iOS軟體開發課程。

    ReplyDelete