iOS 不開源怎麼深入學習 iOS 開發?

Android 是開源的,iOS 是閉源的,高級 Android 開發者可以看源碼理解底層的原理,那麼 iOS 開發者不能看源碼怎麼提高?


我都沒想過這個問題,因為距離對融會貫通的調用 Cocoa Touch 都還有無限遠的距離,遑論去了解他的實現。

介面之所以叫介面,就是因為他跟實現沒有關係,你信賴他會根據約定去給你想要的東西,這是介面。 這和你與後台程序交互是一樣的道理,如果和預期不一致那是他出了問題,你不會跟後台程序員說讓我看看你的代碼吧?

其實你不要覺得大部分人都很好(hào)學,Objective-C 的 Runtime 就是開源的,現實中也不見得很多人都對他了如指掌。因為大部分人都沉默在寫業務的無聊日子裡去了。


必須要靠代碼「深入」的都是一些特別的 bug 而已。正常的編程都靠抽象的模型。比如說消息循環,你就知道那裡有個循環就行了。不是必須知道循環是怎麼寫的。如果一個框架這都需要看到實際代碼,那設計的也太不好了。你自己的精力也看不過來。

當然有的時候有些問題就是看到代碼才清楚。那就是個權衡了。如果這個系統很多人在上面開發,一搜 Stackoverflow 一大把答案。如果那個系統給你十幾萬代碼,但是除了你沒人用。哪個好用還不好說。


iOS的文檔也很豐富,對於理解整體架構還是很有幫助的,多看看,對了解系統的整體架構還是沒問題。

不過話說回來,搞移動開發還是建議從Android開始,有源碼在手,從應用到框架,從策略到實現都可以清楚地看到,如此修鍊上幾年,再轉iOS,會發現幾乎所有東西都是一模一樣,而且iOS還更簡單。


還有,iOS的底層是開源的,Darwin和Runtime等


windows不開源也不妨礙那麼多高手。你可以逆向,你也可以去研究OS,並發相關的東西


我說,朋友,別太好高騖遠了。你問問有幾個安卓看過源碼。


到蘋果公司當碼農就可以啦……逃...


提問深入學習 iOS 開發 ,我認為題主已經掌握基本的開發流程了.

那麼如何深入學習 iOS 開發呢?

請參考各位大神的回答

iOS 開發怎麼入門? - Objective-C

實際我想說的是, iOS 不開源,並不影響 iOS 開發的深入學習. 當然,如果你想深入學習 iOS 框架原理的話...

1. iOS 雖然不開源,但是官方給出了 其各種 技術的 說明 文檔.

iOS Developer Library 通過閱讀其各個 topic , 了解其機制以及使用方法.

2. GNUstep.org 有 Foundation 框架的開源實現, 包含如 NSArray ,NSString 以及 runtime ,runloop,block等等.通過閱讀 開源代碼 對比 蘋果官方文檔 說明進行學習.

3. 保持不斷學習的心,不僅學習各種 技術的使用方法,關注它實現原理,還要進一步思考,它為什麼這樣處理,解決了什麼問題.

就醬!

ps: 以上未經充分實踐


如果你想通過學習 iOS 自帶的系統程序來提高自己的應用研發技巧的話,我可以提供兩種解決方案:

1. 通過越獄逆向的手段,class dump 系統應用的頭文件,Reveal 查看應用的視圖層級結構,應該可以猜到個大概。

2. iOS 社區中也有許多優秀的開源程序可供學習,不一定要死摳系統應用。

如果你想通過學習 iOS 的源碼來提高自己編寫應用的水平,我有以下兩個觀點不建議你這樣做:

1. 系統層和應用層的程序編寫完全是兩個概念,你或許可以從源碼中學到許多內容,但是對於編寫 iOS 程序,收效甚微。

2. iOS 現在是閉源的,我想在很長一段時間內,它還會是閉源的。

一己之言,歡迎指正。


如果是為了學習的話我想這足夠了:

https://www.opensource.apple.com


iOS基本都是應用層開發,優秀的開源框架很多,所謂深入學習還是要看你的方向。比如網路請求是http,為了深入學習,你難道要去研究底層通信的實現?


iOS閉源,但是也有一部分是開源的,具體可以看蘋果的網站。oc的運行時也是開源的。

比如你想了解cocoa,讀gnustep也能算是管中窺豹了。


我也沒看過linux的socket源碼,但是並不影響我開發和維護伺服器程序

PS 一定要了解printf源碼才能寫HELLO WORLD嗎?


Apple很多都是開源的呀,runloop,runtime,我最近就在研究runloop的源碼,不見得對工作有多少幫助,純興趣罷了


這問題讓windows程序員情何以堪啊……


深入Linux


可以玩越獄開發啊 theos


開源從來不是解決問題的終極辦法。你不能先寫個app嘛


內核xnu是開源的啊!

mach部分與Linux/BSD等毫無關係,只有xnu的BSD部分才與BSD有點關係!

嚴格來說,xnu是一個獨立的內核,與BSD沒有關係。

不過很多框架,比如渲染技術有關的實現,蘋果花了非常多的心血,所以 ------ 不開源!


iOS深入到底層就是 freeBSD,是開源的


推薦閱讀:

Unity 的 2D 功能與 Cocos2d-x 相比有哪些優勢和劣勢?
如何評價豆瓣推出的新 App「豆瓣」?
登入界面中,「登錄」和「登陸」哪個正確?
哪款免費手機 App 好用到讓你覺得付費都不足以表達感謝之情?
為什麼現在有會照相的手機而沒有可以通話的相機?

TAG:iOS開發 | Android開發 | 移動開發 |