在微信上有童鞋問我iOS開發者的入門標準是神馬?這個問題難到我了,並且貿然給一個答案出來的話,一定會有萬千高手來噴。php
凡人修仙,仙人修道,道人修真。當咱們仍是一個在青石板上蹲馬步汗水涔涔的廢柴時,或許天空中偶爾會有御劍飛行的仙人路過。金色的陽光灑在仙人隨風舞動的劍穗上,此時不由會油然而生一種衝動,但願有一天能成爲這樣的高手,自由飛翔。只是路漫漫其修遠兮,漫漫修真路,從一個後天廢柴到羽化昇仙成爲大神須要太多的努力。html
我我的還屬於iOS開發的外門弟子,正在入門的門檻上,因此仍是一塊兒來看看iOS開發內門弟子給出的答案吧。ios
參考圖詳見pdf文檔,這裏大概概括下。git
Objective-C 語言github
欲練神功,必先自宮!除非是仙人轉世,任何一個修真者都要從最基本也最痛苦的煉體開始。對Objective-C語言的學習能夠對應修真者的煉體或者後天境界。通過後天境界的苦修,一個修真者能夠輕鬆戰勝幾個普通流氓,不過當十幾個甚至更多人蜂擁而上時,仍是趕忙逃命吧。 欲學iOS開發,必先學習Objective-C! iOS開發中用到的主要編程語言就是Objective-C語言,雖然也可使用C和C++語言混合編程,不過Objective-C語言是最核心的部分。編程
其中又包括:設計模式
面向對象編程基礎(類和繼承,變量和方法的做用域,MVC基本概念,分類)微信
方法和函數(消息,類定義和屬性,與C/C++的混合編程)網絡
內存管理(strong/weak, ARC自動引用計數,自動釋放對象)多線程
代碼設計模式(Block塊語句,Target/action,協議)
UIKIT(視圖層級,繪製事件,觸摸事件,動畫)
多媒體(配置,AVFoundation, C語言的API)
核心iOS7類庫
編程語言只是基礎,真正的開發利器是iOS7的核心類庫。掌握了Objective-C語言只是讓你從一個普通人變成俠客,可是離真正的修真高手還有很長的路。從只懂得煉體的後天境界晉升到揮手間敵人灰飛煙滅的練氣或者先天境界,就必須掌握核心iOS7類庫。
其中又包括:
相機和microphone
社交網絡與分享
CoreData數據持久化
Foundation,又包括Application loop(應用循環),Threads(線程),Networking(網絡)。
MapKit,也就是如何使用地圖
Passbook,也就是和移動支付系統的整合
CoreLocation,如何在茫茫人海之中找到你所愛的位置
Bluetooth,藍牙模塊,若是你要開發周邊硬件設備,這是必不可少的
Notifications,消息推送,又包括Local本地和Push(APNS)推送
CoreMotion, 好比陀螺儀相關的東西
GameKit,和第三方遊戲設備(手柄)相關的東西
SpriteKit,相似cocos2d的2D遊戲引擎
第三方依賴庫管理
晉升先天以後,一個修真者就脫離了低級趣味,成了修真隊伍的真正成員。雖然自身對天地大道的感悟和修煉是根本,但若是有那麼幾件靈器、仙器甚至神器在手,不管是保護自身的護身法寶仍是令敵人膽寒的攻伐之器,均可以讓你在修煉的路上笑傲江湖。
對iOS開發者來講,善於藉助第三方類庫的強大力量來實現產品的各類功能,就如同修真者手持神兵法寶通常,無往而不利。神器法寶多了也很差辦,所謂財不外露,拿着一大堆法寶在外面炫富是修真者大忌。這個時候一個能容納萬物的儲物乾坤袋就成了修真者的夢想之物。好在有CocoaPods,它比修真者儲物袋更神奇的是,你只需使用CocoaPods,就能夠自動將各類優秀的第三方類庫包含在項目之中。一個iOS開發者若是不懂CocoaPods,簡直就是修真界的窮DS一枚。懂CocoaPods的iOS開發者不說立馬晉升高富帥,起碼也會成爲中產階層之一。
對CocoaPods的使用請參考這裏:CocoaPods安裝和使用教程
Xcode 5
修真者都喜歡天地靈氣充足的修煉之地,iOS開發者也很是須要一個強大的開發環境幫助本身打理項目。
尋找一個理想的修煉之地對於修真者是奢侈的,所以大量散修選擇加入各類宗門或學院,不然萬難有出頭之日。
對於iOS開發者則能夠省掉這份煩惱,由於全部iOS開發者均可以避免費享受最強大的iOS開發環境-Xcode 5。
對於Xcode5的學習又包括:
項目管理:包括文件結構,導航,Build 設置,屬性列表等
代碼編輯器:包括如何高亮,查找,自動完成,查看文件,Assistant Editor等等。
Interface Builder: 現在的Interface Builder(界面編輯器)是內置在Xcode中的,這部分又包括Storyboards和xib的使用,控件類型及屬性設置,IBOutlet和IBAction,自定義類,Tag,視圖文件結構等。
代碼調試工具:包括lldb,斷點,日誌等
Instrumentation工具:包括內存泄露和CPU使用率的監控等。
Git版本管理:包括repository的管理,branching和merging。
詳情請參考:
軟件工程
修真者除了修身練氣,還要煉神,也就是修煉本身的神魂。神魂的層次提升了,不光對自身的修煉有益,還能夠控制其餘修真者當本身的小弟,或者有節操點,吸引其餘修真者爲了本身的目標共同奮鬥(好比一塊兒探索某個神府)。
iOS開發者除了知道如何具體寫代碼,還要在思想上提高本身的檔次,站在一個更高的角度看待項目的開發和管理。這個時候就須要瞭解一些軟件工程的概念。
對於軟件工程,須要掌握的內容以下:
應用程序的架構:好比模塊化和SOA,邏輯封裝等
敏捷過程:好比項目全部者和用戶場景,迭代開發,高效溝通等。其中迭代開發步伐又包括測試和結對編程,CI和代碼審閱,QA質量測試和調試。
項目管理:好比項目規劃和評估,工具和文檔化,Licensing等。
iOS開發者的神通功法1-Tests測試
修真者乃逆天而爲,其中所遇到的艱難險阻是常人難以理解和接受的。當自身實力到了必定的程度以後,就要承受天威的打擊-各類雷劫,好比四九雷劫,六九雷劫,九九雷劫,飛昇時的萬雷劫。無論你自身實力如何強大,肉身如何抗操,元氣如何充盈,神魂如何逆天,在雷劫時一不當心就會永墜輪迴。
在iOS開發時,無論咱們如何努力熬夜,如何苦逼編碼,到了測試的時候發現程序直接掛掉了,簡直是親者痛仇者呵呵的不可承受之重。
所以一個有經驗的iOS開發者每每會採用測試驅動開發的思路。
大概要學習的內容包括:
測試類型:單元測試,功能測試,整合測試,性能測試,可用性測試,迴歸測試等。
連續測試:continuous integration,本身去google
XCTest:Xcode特有的測試方法。
關於這部分的內容詳細參考:
Xcode Overview: Unit Test Your App
iOS開發者的神通功法2-Git版本控制
常言道,一人得道雞犬升天。修真者在飛昇以後每每會將本身的修煉資源留給家族後人或好友使用。一方面是由於基因的自私天性,另外一方面則是由於但願經過這種方式讓更多的追隨者能夠一同飛昇,在更廣闊的大千世界中能夠攜手打拼。
iOS開發的獨行俠時代已通過去了,不少團隊中的產品或項目開發是協同進行的,即使是純粹我的開發,也常常須要用到版本控制工具。
所以,iOS開發者須要對Git版本控制有必定程度的瞭解。
具體包括:
版本控制系統:其中又包括分佈式VCS,Branch,Merge,Diff
GitHub的使用:Fork和Pull requests
config: remotes和default behaviors。
iOS開發者的神通功法3—移動應用開發的獨特性
凡人修仙,仙人修道,道人修真。後天期,先天期,金丹期,元嬰期,洞虛期,空冥期,渡劫期,大成期。。。不管修真者處在哪一個階段,都須要針對特定的修煉階段瞭解和獲取所需資源。
開發者也是如此,雖然Web開發,PC端應用開發,移動應用開發並無等級之分,但各自卻有了徹底不一樣的特色。
開發者須要根據移動應用開發的獨特性掌握相應的知識:
HIG(Human Interface Guidelines):人機界面交互,具體參考:
iOS Human Interface Guidelines: Designing for iOS 7
流量消耗的考慮:包含兩個方面,一個是安裝包的大小,另外一個則是在使用過程當中的流量消耗。
多線程操做:好比上傳下載文件之類比較耗時間的操做能夠單獨放在一個線程中,詳細請參考:Grand Central Dispatch (GCD) Reference
狀態保存和恢復:讓用戶下一次進入應用時仍然進入此前所在的界面和狀態。
本地化:根據用戶所在的地區選擇對應的語言顯示
iOS開發者的神通功法4—吸星大法-參考別人的源代碼
不管是修煉武功仍是修真,都有一個相似吸星大法的邪門功法,那就是把別人的功力佔爲己有。
在iOS中,一樣有這樣一門強大的功法,那就是參考別人的源代碼。比吸星大法更神奇的地方是,參考別人的源代碼是共贏的過程,不會讓別人的功力降低,反而讓你們在切磋的過程當中共同進步。
源代碼的來源包括:
http://developer.apple.com中蘋果官方的源代碼;
http://github.com裏面的源代碼;
code4app,cocoachina等第三方網站中你們共享的源代碼;
教程網站和其它第三方網站中的源代碼(如http://raywenderlich.com等);
經過逆向過程研究別人的應用,這個有點高大上了。
真正的高手善於利用吸星大法迅速提高本身的實力,實在是居家旅行行走江湖修真者的必備功法啊。
iOS開發者的神通功法5—提升英語水平
一個修真者莫大的痛苦是,本身的面前擺着一門絕世神通,卻TMD是火星文徹底看不懂?
對於iOS開發者(包括其它程序猿)來講,若是本身的英文水平不行,就等於手握萬千絕世神通卻半個字都不懂。
因此,最起碼要多花時間看看英文文檔,教程,博客,論壇,沒必要刻意去學,而是在提升本身iOS功力的同時提升本身的英文水平。二者相輔相成,相得益彰。
產品發佈
修真者在漫長的修煉過程當中,須要消耗大量的資源。這些資源除了家族門派儲備,強取豪奪,各類奇葩奇遇以外,就只有靠剩餘價值交換的形式了。好比煉丹師把本身的仙丹拿來換一門功法,煉器師把本身的法寶拿來換仙丹,有多餘功法的修真者會拍賣功法換取能讓本身修爲一日千里的仙丹,等等。
iOS開發者(我認可這部分有點扯~),特別是我的開發者不是神人,也要食人間煙火。因此辛辛苦苦開發的產品確定是要上線發佈,讓更多人使用甚至購買的(或者讓投資人買單)。
所以一個真正的開發者也必須學會如何發佈本身的產品,因此必須掌握如下知識:
設備測試:個人第一款iPad應用沒通過設備測試你敢信?不過當時第一代iPad尚未T正式發佈,是特殊歷史時期的特殊作法,並且是獲得蘋果承認的。現在你這樣作試試看?TestFlight: 就讓身邊的幾個程序猿一塊兒測測就算用戶測試完成了?趕忙試試這個利器吧。
App Store發佈:包括provisioning profile,code-signing,開發者入口,具體參考:
或蘋果官方文檔,由於具體作法常常會有調整。
好了,一個iOS開發修真者在有了以上的基礎以後,在成爲高手的路上雖然還會有諸多波折,但至少有了前進的方向,或者說有了指引。
修真之路最重心智開啓和意志的磨練,無論採用何種方法,無論有着何種目標,若是意志不堅決,向道之心會受到美女,懶惰,娛樂等各方面的影響,最終中道而去。 你們一塊兒努力吧。
參考:
https://www.codefellows.org/blogs/everything-a-competent-ios-developer-needs-to-know