斯科特·福斯特爾和他的iso開發(fā)團隊。
為弓長嶺等地區(qū)用戶提供了全套網頁設計制作服務,及弓長嶺網站建設行業(yè)解決方案。主營業(yè)務為成都做網站、成都網站建設、弓長嶺網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
斯科特·福斯特爾是Mac OS X系統(tǒng)以及Aqua用戶界面的最初設計者之一。在成功推出OS X Leopard系統(tǒng)后,福斯特爾被喬布斯安排開發(fā)iPhone操作系統(tǒng),iOS是他最大的成就。
蘋果公司最早于2007年1月9日的Macworld大會上公布這個系統(tǒng),最初是設計給iPhone使用的,后來陸續(xù)套用到iPod touch、iPad以及Apple TV等產品上。
iOS與蘋果的Mac OS X操作系統(tǒng)一樣,屬于類Unix的商業(yè)操作系統(tǒng)。原本這個系統(tǒng)名為iPhone OS,因為iPad,iPhone,iPod touch都使用iPhone OS。
所以2010WWDC大會上宣布改名為iOS(iOS為美國Cisco公司網絡設備操作系統(tǒng)注冊商標,蘋果改名已獲得Cisco公司授權)。
擴展資料
iOS的影響能夠從以下的特點顯現(xiàn):
Facebook和Twitter上,加速度計,GPS,高端處理器,相機,Safari瀏覽器,功能強大的API,游戲中心,在應用程序內購買,提醒,寬范圍的手勢。
全球的企業(yè)都開始選用 iOS 設備,因為它具有企業(yè)專屬功能和高度的安全性。iOS 兼容Microsoft Exchange和標準服務器,可發(fā)送無線推送的電子郵件、日歷和通訊錄。
iOS 在傳輸、設備內等待和iTunes備份三個不同階段為信息分別加密,確保你的數(shù)據安全。你可以安全地通過業(yè)界標準VPN協(xié)議接入私人企業(yè)網絡,公司也可以使用配置文件輕松地在企業(yè)內部署 iPhone。
參考資料來源:百度百科-斯科特·福斯特爾
一句話來形容:牛掰的不像地球上的人物。
我們不談技術,就簡單介紹一下這寫出IOS和安卓的兩位大神。
很多朋友都以為IOS是喬布斯的作品,實際不然,IOS系統(tǒng)實際上更多的是出自斯科特·福斯特之手。但這個人實在太低調了,以至于很多人都沒有聽過他的名字。
喬布斯開創(chuàng)了蘋果公司的巔峰,拉開了智能手機的新時代,而福斯特正是那個時代最亮眼的星。這位大神是斯坦福大學計算機系的高材生,才華橫溢的他多負責幕后工作,曾被認為是喬布斯最理想的接班人。
福斯特爾是蘋果的王牌軟件設計師,他是Mac OS X系統(tǒng)以及Aqua用戶界面的最初設計者之一,iOS廣為人知的多點觸控界面就出自福斯特爾的手筆,備受好評的IOS生態(tài)也借鑒了不少他的研究成果。
遺憾的是,福斯特在后期有些膨脹了,再加上漏洞百出的蘋果地圖,讓他得罪了不少領導。喬布斯病逝后,福斯特與上層不和,最終選擇辭職,一代大神從此銷聲匿跡。
這個名字聽上去好像還是聽陌生的,但說起另一個名詞大家肯定不會陌生:安卓。
而安德·魯賓正是寫出安卓系統(tǒng)的人。
安德·魯賓有多厲害呢,焊接,編程,運維,PLC……幾乎就沒有他不會的東西。他23歲的時候就是卡爾蔡司機器人公司的設計師,這份履歷足以讓他吃香喝辣的了。但安德·魯賓并不滿足,1986年他進入了蘋果公司,那時候蘋果還是以技術人員為主。魯賓剛去蘋果公司就搞了個大新聞——他對公司的內部電話系統(tǒng)進行了重新編程,結果很多同事在那天都接到了老板的電話,聲稱要給他們股票獎勵。
安德·魯賓在蘋果公司主要搞研發(fā),蘋果首款塔式電腦Quadra和 歷史 上第一個軟modem就出自他手。這人是個工作狂,一天24小時吃住全在辦公室,他曾設計出一款智能手機操作系統(tǒng)和UI——Magic Cap,卻因為理念太過超前沒有被大眾認可,1997年,心高氣傲的他離開了蘋果,又去了微軟。
在微軟他也閑不住,很快又闖了大禍,他做一款機器人被黑客入侵,微軟安全小組表示這會泄露公司機密。在微軟沒呆夠三年的他又跑路了,跑去斯坦福大學當教授了。
也是在這段時間,安德·魯賓設計出了安卓的雛形,也遇到了貴人——谷歌創(chuàng)始人拉里·佩奇和謝爾蓋·布林。不久后谷歌收購了安卓,安德?魯賓也成為了谷歌的副總裁。
最后說個題外話,相比美國,我們確實缺少這樣的才華橫溢的技術性人才,也許是大環(huán)境的原因,我們至今也做不出像安卓和IOS這樣優(yōu)秀的操作系統(tǒng)。希望鴻蒙能在做好系統(tǒng)生態(tài)后,給大家?guī)眢@喜吧。
本人10年開發(fā)培訓經驗,期間經歷了Java Web,Android,H5,大數(shù)據,PHP等多個不同的方向的開發(fā),也做過軟件培訓公司的金牌講師,很有興趣回答你這個問題。
以我自身的體會來說吧,程序員也是要分三六九等的。這個世界上絕大多數(shù)程序員都是做應用層面開發(fā)的,什么意思呢?就是說都是開發(fā)具體的App,網站,應用等的程序員。
但是這些程序員數(shù)量這么多,為啥子呢?因為大多數(shù)程序員達不到開發(fā)操作系統(tǒng)的能力唄,當然包括我自己。
所以這個世界上,也就只有一小部分程序員可以參與到操作系統(tǒng)的研發(fā)之中,他們可以說是程序員這個金字塔的塔尖部分。
而iOS或Android,都屬于操作系統(tǒng),那么開發(fā)這種系統(tǒng)的人,當然是很牛了。就好比Linux系統(tǒng)內核的開發(fā)者Linus,他很狂妄的說過:I'm your God! 沒辦法,人家有狂妄的資本。
如果有Java,Android,H5等開發(fā)方面的問題,或者是開發(fā)求職方面的問題,都可以在評論區(qū)留言,或者私信我!
研發(fā)一個系統(tǒng)不難,難的是如何讓系統(tǒng)活下來并且占有較高的市場份額,除了大家熟悉的安卓和iOS之外,三星的Bada和Tizen、微軟的Windows Phone、黑莓的BlackBerry OS、諾基亞的塞班等等,加在一起也有十余個了,但是最終還是被安卓和iOS分攤了市場。
這些系統(tǒng)并不是因為本身的技術問題死在了沙灘上,更多的原因是因為沒有形成一個生態(tài)鏈!
在iOS剛開發(fā)出來時,喬布斯甚至打算讓iOS全封閉,拒絕蘋果公司以外的人開發(fā)應用程序,iPhone剛推出時,喬布斯表示將拒絕外部開發(fā)人員開發(fā)iOS應用程序,他認為這些外部開發(fā)人員開發(fā)iOS應用程序會破壞iPhone的體驗完整性,把iPhone搞得亂七八糟, 讓iPhone感染病毒 帶來安全隱患。
好在后來被說服讓開發(fā)者進來,不然現(xiàn)在我們很可能都見不到iOS系統(tǒng)了,因為生態(tài)圈的建設是最重要的,光有一個系統(tǒng)沒有應用的支持也是白瞎,而安卓由于做的是開源系統(tǒng),因此有巨量的開發(fā)者進入安卓開發(fā)應用,iOS和安卓的生態(tài)圈已經形成并且趨于穩(wěn)定,其它企業(yè)要想再研發(fā)一個系統(tǒng)就比較困難了。
開發(fā)手機系統(tǒng)是個很龐大的工程,不但要有雄厚的資金還要有一支技術過硬的開發(fā)團隊,別所自主研發(fā)系統(tǒng),有時候開發(fā)一款軟件都要需要一支團隊晝夜不休的工作幾個月甚至更長時間。
android操作系統(tǒng)本身是使用Java開發(fā),使用JNI調用本地的C語言庫,由操作系統(tǒng)實現(xiàn)對底層調用。iOS系統(tǒng)是蘋果自己開發(fā)的,核心合適C語言。
一個新操作系統(tǒng)要運轉起來,不只意味著上億行代碼,還需要生態(tài)系統(tǒng)運轉起來,獲得用戶和開發(fā)者的支持。所以不是新開發(fā)操作系統(tǒng)是否容易,而是要養(yǎng)成新生態(tài)要花多久的時間。
當然是非常厲害了,看看我們身邊的程序員在干什么事就知道了(很多根本就不夠資格入行),能夠進行系統(tǒng)開發(fā)的那部分人都是頂級高手,能寫出安卓IOS那就更是高手中的高手了。
蘋果IOS系統(tǒng)是由一位叫斯科特·福斯特爾帶隊孵化出的產品,至于這個系統(tǒng)的優(yōu)點就不多說,毫無疑問目前沒有任何移動端系統(tǒng)能與之媲美。蘋果能一直領先業(yè)界,這款系統(tǒng)是有很大功勞的。那么斯科特是一位厲害的人嗎,答案是肯定的,若光憑運氣沒有智慧是絕不可能把如此優(yōu)秀的系統(tǒng)做出來的。
與一般的學霸差別并不大,福斯特的經歷算不上傳奇,在斯坦福大學獲得符號系統(tǒng)學位和計算機科學學位后,97年一起和喬布斯加入了蘋果??赡苁橇晳T于幕后吧,大概是十年后大家才知道這位厲害的人物。2008年,提升為高級副總裁;12年,轉任CEO庫克的個人顧問,后因個人原因離職。
在進入蘋果之前,他已經有一家自己軟件公司,IOS就是在原有的基礎上開發(fā)出來。IOS雖然是團隊的產物,但若沒有原始的積累是不可能發(fā)展如此順利。
安卓最初的創(chuàng)始人是安迪·魯賓,與福斯特的經歷比較相似,最初的獨立闖蕩并沒有出眾的作品讓他出名,都是在找到志同道合的合作伙伴才逐漸將自己的才華展現(xiàn)出來。不過魯賓的從業(yè)經驗的確非常豐富,可能也正是這些經歷,讓他在后來的職業(yè)生涯中能充滿靈感。
1986年,取得尤蒂卡學院計算機學學士學位后,成為了卡爾·蔡司公司擔任機器人工程師,當時的他只有23歲。1989年,他又順利進入蘋果,并且在蘋果還狠狠干了一票。不久后又溜到了微軟,只不過因為搞個人項目太猖狂,微軟領導看不慣他,沒有讓他的作品發(fā)行。
可能安迪也想不到,他還能覓到知音,在斯坦福大學的一次授課中,安迪遇到了他人生中最懂他的兩位貴人,他們就是谷歌創(chuàng)始人拉里·佩奇和謝爾蓋·布林。幾人不謀而合,終于做出了世界上最流行的手機操作系統(tǒng)——安卓。
如很多朋友所言,可能做一款系統(tǒng)難度的確不是最高的,很多國家都能辦到,但是要做到像IOS或者安卓這么受歡迎也不是易事。所以連百度、阿里這樣的巨頭都曾放棄過,原因不言而喻。從現(xiàn)在華為鴻蒙的動作同樣能看出,雖然谷歌苦苦相逼,但鴻蒙上線并不干脆。
不管是什么原因,這兩個人能夠做出如此優(yōu)秀的系統(tǒng),肯定不是一般軟件開發(fā)人員能相比的。不過要論個人魅力,安迪可能要更加全面,動手能力、動腦能力、口才都非常厲害,安卓能在如此短的時間超越IOS規(guī)模離不開他的謀略。
當然,人都是有審美疲勞的,雖然現(xiàn)在的系統(tǒng)已經非常好用,但若有新系統(tǒng)出現(xiàn),比如現(xiàn)在的鴻蒙,個人還是非常愿意一試的。
亂世出英雄,時代不同環(huán)境不同,如果谷歌總想著通過不良競爭打壓別人,那么后來者的機會可能也就來了。
有的人總是說生態(tài)的問題,那是看新聞看多了,外行人看熱鬧看多了,難道真的以為這世界上只有熱鬧就夠了,沒有真正的技術了?
做一個操作系統(tǒng)是非常難的,全世界那么多軟硬件巨頭,而操作系統(tǒng)的數(shù)量一個手就能數(shù)的過來。常說的生態(tài)難,那只是第二步,而第一步是要把操作系統(tǒng)做出來,這絕不是簡單的事。
一個操作系統(tǒng),是創(chuàng)造一片生態(tài),讓全世界都能在你創(chuàng)造的環(huán)境內生存,并且還要用你定的規(guī)則來開發(fā)各種各樣的軟件。這里面需要做的事太多太多,需要一個很強大的團隊,用數(shù)年的時間才能開發(fā)出來。然后就是核心問題了,你做的系統(tǒng)好不好用,功能合不合理?強不強大?萬一系統(tǒng)設計的不行,不好用,沒人用,那你這前期巨大的資金和數(shù)年的時間可就全白費了!這就算是世界級巨頭也難以承受的損失。
正因為如此難,所以全世界也沒有幾個做操作系統(tǒng)的,現(xiàn)在華為做的系統(tǒng),也是在安卓系統(tǒng)的基礎上做的,也就是說,別人做好的系統(tǒng),拿來改一改,都已經花了幾千億了。而最近宣傳的電腦端的深度Deepin系統(tǒng),也是在LINUX基礎上做的,也就是說:還是別人的系統(tǒng),咱們只是拿過來改了改而已!
一、當然挺牛的
iOS的負責人是福斯特,1997年陷入困境的蘋果收購了喬布斯創(chuàng)立的NeXT公司,喬布斯帶領福斯特等人加入蘋果公司,隨后福斯特負責了MAC OS的開發(fā),將NeXTSTEP一些架構和設計理念引入MAC OS中。
后來喬布斯計劃開發(fā)智能手機,委派福斯特負責iOS系統(tǒng)的開發(fā),并且從那時候起他就是iOS系統(tǒng)負責人,直到離職,可以說福斯特是這兩大操作系統(tǒng)的奠基者和長期負責人。
而Android操作系統(tǒng)最初由Andy Rubin開發(fā)的,他最開始想做的是互聯(lián)網手機,所以創(chuàng)辦Android,開始啟動下一代智能手機的開發(fā)。最后安卓被谷歌收購,開啟了安卓的輝煌歷程。
二、但更牛的是生態(tài),比系統(tǒng)本身難多了
當然,再加到系統(tǒng)本身,其實研發(fā)一個系統(tǒng),本身并不是那么的難,國內很多廠商都有研發(fā)系統(tǒng)的能力,比如阿里有系統(tǒng),華為有系統(tǒng),要研發(fā)系統(tǒng),再發(fā)展出一個成熟的生態(tài),才是真的困難。
微軟多厲害,三星也多厲害,但微軟的手機系統(tǒng),三星的手機系統(tǒng)都可以說是失敗了,這個才是真正的難點。
目前華為推出HMS,其實也是為了生態(tài),而鴻蒙發(fā)布了沒有使用在手機上,也是因為生態(tài)不行,華為不敢也不能冒這個險,繼續(xù)便宜安卓。
當年,紅極一時的諾基亞我想大家不陌生吧。當年素有"機王"的稱號,據相關信息顯示,自1996年起,諾基亞連續(xù)14年占據手機市場份額第一。當時搭載的是塞班系統(tǒng)。2011年的時候,諾基亞手機被安卓跟蘋果系統(tǒng)反超。錯失世界第一的霸主地位。盡管諾基亞的暗淡有自己的決策問題,但是蘋果跟安卓系統(tǒng)對他也是致命的打擊。我有時候在想,當初的諾基亞是不是對這兩哥們恨之入骨呢?這點不難看出這兩哥們是蠻牛。
目前國內市場品牌手機商,比如華為,小米,oppo對android進行了修改,完善。有了自己的EMUI MIUI ColorOS系統(tǒng)。國人的手機要么是安卓機,要么是蘋果機。其他系統(tǒng)的份額很小。盡管我們有華為的操作系統(tǒng),但是不夠完美。如果沒有這兩牛人系統(tǒng),會不會影響到我們手機的使用呢?這點不難看出這兩哥們是蠻牛。
近幾年,移動互聯(lián)網一直很火爆,也正因為這兩系統(tǒng)。才使得這么多安卓與iOS開發(fā)人員那么多。試想,如國沒有這個系統(tǒng)了,那會有多少開發(fā)人員會出現(xiàn)短暫的失業(yè)呢?從這點不難看出這兩哥們是蠻牛。
跟喬幫主相比,可能很多人都不認識他,但是不管怎么樣。他所做的貢獻是鐵板釘釘?shù)氖铝?。iOS出自他手。這哥們是蘋果軟件業(yè)務的靈魂人物,他在軟件設計方面非常有天賦。外界一致認為他是繼喬幫主之后的下一位幫主人選。但是喬幫主走后,他也沒能繼位。反而是選擇了辭職。根據相關資料顯示,也有他自己的原因吧,大神的世界我們不懂啊。
鼎鼎有名的安卓系統(tǒng)就是出自他手,我覺得有技術在手就是拽,他的就業(yè)跳槽經歷也是蠻豐富的。1986年獲得計算機學士學位。1989年僅26歲的他加入蘋果公司。到后面加入微軟。又再從微軟離職。人生當中一直沒有遇到伯樂啊。幾經波折,最后遇到了伯樂谷歌,2005年他寫的安卓系統(tǒng)被谷歌收購。他從蘋果的一個開發(fā)人員,憑借著Android一直干到了Google移動平臺副總裁、Android主管。并于2014年10從谷歌離職。
以上講了這么多足足可以看出這兩系統(tǒng)的優(yōu)秀。以及市場份額龐大。但值得慶幸的是近幾年面對美國的管制,為了不受制于人。我國 科技 巨頭似乎也明白這個道理,也在涉足操作系統(tǒng)的研發(fā)。雖然目前完全取代Android系統(tǒng)是不可能的,但是未來可期啊。
你覺得我國的操作系統(tǒng)會超過安卓系統(tǒng)嗎?歡迎評論區(qū)留言討論!
謝謝您的問題。福斯特與魯賓,確實有過人之處。
福斯特在蘋果公司的牛。 福斯特于1992年加入了喬布斯創(chuàng)辦的NeXT公司,1997年蘋果收購NeXT,福斯特跟隨喬布斯加盟蘋果。按照蘋果與喬布斯安排,福斯特先后負責了MAC OS與iOS系統(tǒng)的開發(fā),是兩大重要貢獻的重要貢獻者、奠基者。之后,福斯特負責的軟件業(yè)務出現(xiàn)了兩大失誤,包括失敗的蘋果地圖與不完善的Siri服務,福斯特不愿意道歉,他很可能是蘋果公司設計、硬件兩方高管意見不合、決策失誤的犧牲品。作為喬布斯繼任人選之一,福斯特不想在蘋果繼續(xù)任職,2012年離開蘋果。
福斯特離開蘋果公司的牛。 福斯特離職后,隨著蘋果產品的更加豐富、生態(tài)愈加完善,優(yōu)化iOS系統(tǒng)更不容易,iOS系統(tǒng)升級后問題增加,iOS和MacOS的繼任者顯然不如福斯特深刻理解自己的產品。另一方面,福斯特又開啟了自己另外一段開掛的人生,他聯(lián)合制作的百老匯新音樂劇《歡樂窩》成功上映,技術狂人也有浪漫滿屋。
安迪·魯賓(Andy Rubin)的牛與不牛 。魯賓也是技術發(fā)燒友,而且能做成產品。他設計了家庭影院系統(tǒng)、電腦程序控制的直升機、無人值守的POS 系統(tǒng),很多想法在現(xiàn)在都是前瞻性。 2003 年,魯賓基于長期持有的域名 Android.com 開發(fā)了 Android,安卓系統(tǒng)關鍵在于其開源,兼容五花八門的智能手機,逐步占有市場,其間魯賓又投資了谷歌自動駕駛事業(yè)。不過,魯賓有提前預判10年的眼光與能力,但是缺乏耐心、出手過急,技術之后的 社會 、文化和 科技 環(huán)境并不成熟,市場并不買賬,導致其翻了一些跟頭。
歡迎關注,批評指正。
一座摩天大樓,從來都不是憑空而來。同樣的道理,好操作系統(tǒng)和生態(tài)環(huán)境,也都非一朝一夕。
這個世界上主流的操作系統(tǒng)內核,為什么只有Windows NT和Linux Kernel,因為他們的確很優(yōu)秀啊,但是為什么基于這兩種內核,最強大的生態(tài)系統(tǒng)只有Windows Desktop和Android?不僅僅是因為有個強大的爹,召集了全世界的開發(fā)者去幫它完善生態(tài),但同樣,它們自身也要足夠優(yōu)秀對不對?
所以,不要總是想著,人家的生態(tài)環(huán)境已經占領了市場,我們無法與之匹敵。那當年的Android又是如何把諾基亞,黑莓,微軟等一眾強大到可怕的敵人一一淘汰的?
這是因為你的viewcontroller 繼承了UIViewController.而UIViewController 繼承自oc的NSObject. 在swift 中被修飾成@objc class. 那么就必須要遵循oc的selector,在oc中是不支持方法重載的。所以會報上面的錯誤
如果要解決這種問題有兩種方法
1. 刪除繼承自oc的類
2. 其中一個方法重命名
你的這種情況,顯然第一種方法不合適,你的控制器還是需要繼承自uiviewcontroller,那么只能用第二種方法,對這個方法進行重命名。
參考:
基礎
一定的編程經驗
這里說的編程經驗是至少熟練一門編程語言,對 OOP 有一定的了解,最好熟悉一些基本的設計模式。遇到過的好多 iOS 開發(fā),大多是從別的語言轉過來的,所以有一定的編程基礎,學起來會更容易 get the point.
如果是第一次接觸編程,當然也是沒問題的,只是要做好心理準備,可能會比想象的難。
英語
發(fā)現(xiàn)不少開發(fā)對于英語似乎有點接受不能,通常都是中文優(yōu)先,除非迫不得已,才硬著頭皮看看 StackOverflow,英文文章,文檔等。忘了是誰說過「難走的路越走越好走」,通常如此。其實只要稍微 push 一下自己,那些技術文章啃下來應該不會有太大的問題,有過幾次成功的體驗后,這種恐懼感就會減少很多。優(yōu)質的文章、視頻、書籍,多是英文的,不邁過這個 坎,將來要么成為瓶頸,要么花更大的成本去填補。
入門
書籍
要學習 iOS 開發(fā),自然要先學 Objective-C (當然現(xiàn)在也可以直接上 Swift,不過如果多人協(xié)作的話,OC目前還是主流),因為 OC 是 C 語言的超集,所以了解 C 語言對于學習 OC 肯定會有幫助,不過就算不了解,直接學 OC 也沒太大問題。
這里推薦 BNR (Big Nerd Ranch) 的這本 Objective-C Programming The Big Nerd Ranch Guide,講解地比較細致,能幫助你更好的理解 OC,更重要的是教你遇到問題時,如何去解決問題,以及這個問題對應的一些知識點,如何使用文檔等等。
來到一個新的世界,肯定會對這個世界充滿好奇,想訂閱一大堆博客,買一堆書,看各種教程和視頻,然后就變得浮躁,不知該從哪下手,這會導致拖延癥。 我渴了,給我倒一杯水,這個很直接,馬上就可以做,但如果是給我買一瓶飲料,而自己對那些飲料又不怎么熟悉時,就糾結了,不如刷會微博,看看朋友圈,玩?zhèn)€小游戲先。
所以一本好的入門教材很重要,要契合自己當前的水平,且常常會有收獲,這種成就感會激勵著你繼續(xù)學下去。
在看書的過程中,往往會有這樣的經歷:書中提到某個人、觀點、知識點、書、文章,然后就順著它提到的這些東西出去了,可能某個知識點又牽扯到另一些內容,然后就這樣越走越遠。想起了一個故事——
三只獵狗追一只土拔鼠,土拔鼠逃跑時鉆進了一個樹洞。這個樹洞只有一個出口,不一會兒,忽然從樹洞里跑出一只兔子。兔子飛快地向前跑,并爬上另一棵大樹。兔子因為慌亂在樹上沒站穩(wěn),掉了下來,砸暈了正仰頭看的三只獵狗,最后,兔子終于逃脫。
對于這個故事可以從不同的角度去解讀,我更愿意以初心去解讀。兔子為什么會爬樹?為什么能砸暈三只獵狗?這不是重點,重點是,之前追趕的土撥鼠哪去了?看書時難免會有延伸閱讀,這個深度我覺得不宜超過 2 層,不然很容易就回不來了。
還有就是如果有可能,最好每天都看點,這其實是很難的,因為總是會有優(yōu)先級更高的事,或者之前的某些習慣在干擾。一旦斷了幾天,就不想再拿起來了。
還有,蘋果官方的 Start Developing iOS Apps Today 也是很不錯的入門材料。
視頻
推薦斯坦福老頭子(Paul Hegarty)的 Developing iOS 7 Apps for iPhone and iPad ,當初也是看的這個(那時還是更老的版本),Paul 是資深的 Mac/iOS 開發(fā)(前蘋果員工?),很多知識點講得很到位,學生們的提問也大都在點上,同時配有Demo,總之聽下來會對 iOS 開發(fā)有比較全面的了解。
同時推薦一本小冊子:objc-zen-book,花不長時間就能看完,里面是一些 Best Practices,對于編寫優(yōu)質代碼會很有幫助。
筆記
這是一個持久的過程,任何階段都適用。以前也沒太在意這個,覺得概念性的東西,腦子過一遍,就大概知道了,然后就去啃其他的東西了,現(xiàn)在看來,如果有記筆記的話,會更有助于消化概念、知識點,也可以記錄自己的思考過程。達芬奇就記錄了10000多頁的筆記。
記筆記可以加深對知識點的理解,而成為編程巨星的唯一秘訣就是:對所做的事情理解地越深,就會做得越好。同時如果遵循遺忘曲線去復習的話,效果更佳。對知識點了解地足夠透徹后,Debug 時才更有可能知道問題出在哪,解決問題也更容易有思路。
筆記不僅可以記知識點,也可以記錄調試過程,比如這篇筆記,有一種調試方法:小黃鴨調試法
許多程序員都有過向別人(甚至可能向完全不會編程的人)提問及解釋編程問題,就在解釋的過程中擊中了問題的解決方案。一邊闡述代碼的意圖一邊觀察它實際上的意圖并做調試,這兩者之間的任何不協(xié)調會變得很明顯,并且更容易發(fā)現(xiàn)自己的錯誤。
生活中我們可能不會真的這么去做,這時抽離出另一個自己,記錄下跟ta的對話,也是個發(fā)現(xiàn)問題的好方法。
練習
這也是一個持續(xù)的過程,知道了些概念或原理后,總是會想著去驗證下是不是這樣,無論結果是否如自己預期,實踐的過程會降低對語言的陌生感,慢慢地培養(yǎng)一種駕馭這門語言的自信,如果出了錯,正好可以重新梳理一下。
目標
如果靜下心來看完了 BNR 的這本書,以及斯坦福的 iOS 開發(fā)視頻,那么對 OC 應該比較了解了,一些常用的 UIKit 用起來也沒什么問題了,比如 UIViewController / UIView / UIScrollView / UIImageView / UITableView。也熟悉一些概念,如 KVO / MVC / Delegate / DataSource。
這個階段下來,應該會有:哦,iOS 開發(fā)也就這樣嘛,多翻翻文檔,熟悉 Cocoa Touch 的一些 Class,差不多也能做出一個簡單的 App 了。
進階
入門之后,接下來可以折騰的東西還會有不少。
書籍
Effective Objective-C 2.0,里面提到了 52 種提高 iOS App 質量的途徑。涉及了 API 設計、protocols / category 的使用、寫出更模塊化的代碼等,讀下來應該會有不少收獲。
iOS Programming: The Big Nerd Ranch Guide (4th Edition),又是一本 BNR 的書,這本書的特點是通過 Demo 來引出知識點,然后提一些問題,并且會細說解題思路??磿倪^程中,對于元學習能力的提升也會有一定幫助。
--- update ---
發(fā)現(xiàn)巧哥的 iOS開發(fā)進階 已經可以在京東買到了,雖然沒有細看,但巧哥出品質量肯定有保障。
其他資源
進入這個階段后,可以去探索更大的世界了,現(xiàn)在的資源已經很豐富了,但還是要遵循「少而精」的原則。以下是我覺得挺不錯的資源
iOS Dev Weekly 每周一期,內容多為這一星期里值得關注的Github項目、文章、工具等。
iOS 移動開發(fā)周報 這是唐巧大大整理的每周不錯的 iOS 開發(fā)相關的內容,多為中文。
RayWenderlich 很多詳細又全面的教程,不容錯過。
iOS Dev Slack 國內不少 iOS 開發(fā)(包括大大們)都在這里,不過現(xiàn)在好像不怎么能拿到邀請了。
中文 iOS/Mac 開發(fā)博客列表,打開工具訂閱吧。
還有,如果可能的話,多去分享自己學到的東西,教是最好的學,我試過幾次,效果真的很不錯。
目標
這個階段下來,對于常用的設計模式、內存管理、Blocks 的使用、圖像操作、網絡請求和管理、多線程應該比較熟悉了。對于 CALayer、Animation、UIScrollView、UITableView、UICollectionView、 ViewController Container 則非常熟悉,對「非常熟悉」的定義是:不打開 Xcode,腦子里就能把相應的知識點復述出來 80% ,比如這個類有哪些方法,Delegate / DataSource 有哪些方法,怎么使用,如果要實現(xiàn)某個效果,應該怎么做(好吧, UICollectionView 除外)。
高級
其實高級、進階、入門并沒有嚴格的界限,在入門階段也可以探究高級階段的一些東西。我覺得支撐我們不斷探索和前進的動力不是興趣,而是永不滿足的好奇心,和對優(yōu)雅代碼的追求。
If your standards are low, you're going to stop pretty early on in the process.
BNR 的這篇 Leveling Up 已經講得很好了,也更加細致。
書籍
iOS 7 Programming Pushing the Limits 這本書對 iOS 7 的一些特性會講解地比較深入,當然也不僅僅是 iOS 7。只嘆 iOS 更新實在太快,書籍往往跟不上,一本好書往往需要很長時間來撰寫,等書可以出版了,iOS 又出新版本了。
源碼
看優(yōu)秀的源碼,可以學到很多東西,使用過程中遇到問題也更容易解決。這些是我覺得值得細看的源碼:AFNetworking(NSOperation, HTTP, Block), SDWebImage(Image Handle, Cache, NSOperation, Block),SVPullToRefresh(UIScrollView, State Handle), JSONModel(runtime)
如果有興趣,也可以翻翻 CoreFoundation / OC runtime 的源碼。
資源
oleb
NSHipster
objc.io || objcio.cn
WWDC 視頻
工具
chisel Facebook 出品的 LLDB 助手,用于調試很方便
Reveal 每當好奇某個 App 的實現(xiàn)時,都會打開它一窺究竟,用于調試自己的 App 也很方便
Aspects steipete 大大出品的一款方便使用 method swizzling 的工具,可以在運行時動態(tài)添加代碼到某個方法
class-dump 從 Mach-O 文件生成 OC 頭文件,有時想看看某個 App 大概是如何組織的會比較方便
Hopper 可以對二進制文件進行反編譯,甚至可以生成偽代碼!有時想看看 UIViewController 里某個方法大概是怎么實現(xiàn)的,就可以用它。
Instruments 這個內置的工具對于發(fā)現(xiàn) App 的各種問題很有幫助,如內存占用、泄露,渲染問題等。
目標
這個階段,對于底層的實現(xiàn)會有更深入的了解,各種 Core 開頭的 Framework 至少可以說出個大概,工具也能熟練使用,「正經的代碼」寫過數(shù)萬行,可能天天在翻 Dash。如果別人讓你實現(xiàn)某個功能,能在較短的時間內給出不錯的實現(xiàn)方案,并且足夠細致,甚至精細到如何使用 Core Graphic 去畫某個圖像。
其他
我覺得無論學習什么,「速成」的心態(tài)是最要不得的,這只會讓自己變得浮躁,一知半解,整個過程也很難讓自己的元學習能力得到提升。慢慢來,攻占一個城后,再去打下一個,這時心態(tài)也會平和許多。