iOS開發路線簡述

1 iOS開發環境
1.1 開發環境
標準的配置是MacOSX+Xcode。
MacOSX的話首選用蘋果電腦,Macmini最便宜只要4000多就行了而後本身配一個顯示器,MacBookPro 也能夠,不推薦使用MacBookAir。還有不少人使用黑蘋果或者虛擬機甚至在Windows上裝一些工具都是不可取的。
另外官翻版的也能夠去買,很便宜就能夠買到好機子,官翻版
Xcode這個開發工具本身繼承了iPhoneSDK,因此不用單獨下載SDK。調試的模擬器能夠從Xcode裏面下載不一樣版本的模擬器。
1.2 帳號 證書 上架 等
iOS調試真機是須要證書的,因此這個時候須要從申請一個iDP帳號,不過僅僅須要調試的話,某寶上有不少賣20幾塊的證書。應用上傳AppStore的話有不少種方法,證書分爲299$和99$,99$的能夠到AppStore,299$是不能夠的。html

2 Obejctive-C語言
Obejctive-C語言一般寫做Object-C或者Obj-C,是根據C語言所衍生出來的語言,繼承了C語言的特性,是擴充C的面向對象編程語言,它可以和C、C++混合編程。Obejctive-C是一個編譯型的語言,經過GCC編譯器把Obejctive-C代碼編譯成機器指令。關於基本概念能夠參考,十分鐘讓你明白Objective-C的語法(和Java、C++的對比) 。
對於Swift這門新的語言,我暫時尚未去涉及,建議仍是學學Obejctive-C。
2.1動態特性
Obejctive-C具有一些動態特性,包括動態類型、動態綁定、動態加載,也就是Obejctive-C在運行時才能知道一些對象的類型以及所調用的方法。
2.2內存管理
Obejctive-C是使用引用計數原則,如今Obejctive-C引入ARC(自動引用計數原則)。引用計數有幾個規則,一是誰建立誰釋放,經過alloc、new和copy建立對象,而後調用release或者autorelease去釋放對象,第二是,除了alloc、new和copy以外建立的對象都是autorelease的,第三誰retain了,誰釋放。
2.3 一些語言特性
Obejctive-C首先是隻有單一繼承,沒有多重繼承。
屬性訪問,@property加上@synthesize使用後可以自動生成setter和getter方法。
Category,中文通常叫作類別,他可以爲現有的類提供新的方法,他將類的實現分散到多個不一樣的文件或框架中,建立對私有方法的前向引用,向對象添加非正式協議。
block語法,塊,他一般表明小段的自包含的代碼片斷,所以,他們封裝爲能夠並行執行的工做單元額外有用,還能夠用於在集合中進行遍歷,或者在其餘操做完成時做爲回調。塊代替傳統回調函數的意義有兩個:一是他們容許在方法實現的調用中就近寫入代碼,並且塊常常被做爲框架中一些方法的參數;二是他們能夠訪問本地變量。
Obejctive-C中有不少類是以NS開頭的,那是Cocoa層裏面Foundation框架的類庫。
3 iOS開發
3.1 iOS操做系統簡介
iOS的系統架構分爲四個層次:核心操做系統層(Core OS layer)、核心服務層(Core Services layer)、媒體層(Media layer)和可觸摸層(Cocoa Touch layer)。每層都包含不少系統框架,例如著名的UIKit框架就是在Cocoa Touch。
3.2 MVC與經常使用的設計模式
MVC並非一種設計模式,它是一種軟件架構模式,就是把項目分爲Model、View和Controller三層進行管理。
經常使用的設計模式有代理模式,經過協議和block實現。觀察者模式的話體如今了KVO和NSNotification上了。Target-Action模式是Objective-C中很是常見的對象之間方法調用的方式,通常在和UI打交道的時候處理各類GUI上的事件會利用到這種模式,他一般會有一個Target做爲消息的接收者。單例模式,使得單例對象在項目中只會建立一次。工廠模式,是一個類族的概念,很符合敏捷軟件開發的開放封閉原則。關於各類設計模式,能夠看卡奴達摩的專欄
3.3 Interface Builder和Storyboard
通常寫iOS的UI有三種方式。xib,Storyboard以及代碼建立。
我以前自學用了一會的xib,以後一直用代碼建立,代碼更容易區作多語言版本,並且
xib啓動須要事件比用代碼直接寫慢,xib文件比代碼創建UI文件也大。
具體對比能夠看喵神的博客代碼手寫,xib和StoryBoard間的博弈
3.4 經常使用系統框架和第三方庫
UIKit是最經常使用的框架,主要是用來作UI的。包括視圖UIButton、UILabel,控制器UIViewController等,還有一些觸摸事件、手勢等。
QuartzCore、CoreAnimation框架是一些繪圖、動畫的類庫。
第三方庫的話,能夠查看GitHub上Objective-C的倉庫排名,Search · GitHub 。ios

3.5數據存儲
iOS數據存儲主要有四種方式。
NSKeyedArchiver,採用歸檔的形式來保存數據,該數據對象須要遵照NSCoding協議。歸檔形式保存數據只能一次性歸檔保存以及一次性解壓,只能針對小量誰,並且數據操做笨拙,即若是想改動數據的某一小部分,須要解壓整個數據或者歸檔整個數據。
NSUserDefaults,用來保存應用程序設置和屬性。
第三種,Write寫入文件。
第四種,相對前兩種更爲複雜,但也最好用。SQLite,能夠本身封裝,也可使用FMDataBase等第三方封裝庫,還可使用系統的CoreData。git

3.6數據通訊
iOS的數據通訊有幾種方式,應用層的HTTP,以及傳輸層的封裝TCP或者UDP的Socket接口,還有就是藍牙通信。
HTTP的網絡服務通常能夠用post、get或者SOAP等方式請求數據,能夠用系統的NSURL也能夠用第三方類庫(MKNetWorkKit、AFNetWorking),這兩種類庫均可以作緩存,數據交換的格式通常有JSON和XML。
Socket能夠經過C語言的Socket和CoreFoundation框架的CFNetwork實現,也能夠用第三方類庫AsyncSocket。
藍牙4.0的話使用的是CoreBluetooth框架。github

3.7多線程編程
iOS的多線程有NSThread、NSOperation以及GCD。NSThread比其餘兩個輕量級,可是須要本身管理線程的生命週期,線程同步。線程同步對數據加鎖會有必定的系統開銷。NSOperation則不須要關心線程管理,GCD是一個替代NSThread和NSOperation的技術。編程

3.8iPad開發
iPad和iPhone開發是殊途同歸,可是不要試圖去適配iPad和iPhone,由於他們的UI差異太大。設計模式

3.9其餘
iOS的地圖是使用MapKit框架,定位用CoreLocation。
iOS有一個雲端機制iCloud,iOS還有一個推送機制,能夠由服務器推送消息到手機應用程序,iOS還能夠作本地化。
iOS有一些內置的傳感器能夠利用起來編程,好比三軸加速傳感器,用來測加速度的,還有陀螺感應器,測角速度,感知移動的。
關於iOS的相機、相冊以及音視頻都有相應的類庫。api

4 工具緩存

第一是多人協做的問題,你能夠用SVN或者Git,Git是比較流行的,可是大多數的公司還在用SVN;
第二,iOS的數據持久化有不少方案,最高效的就是SQLite,在Mac上有不少SQLite的可視化管理工具,我用的是SQLiteManager。
第三,關於查看模擬器或者真機的沙盒內容,模擬器可使用SimPholders,真機能夠用iFunBox;屏幕取色工具,Sip。
第四,關於抓包工具Charles不少人喜歡用,巧神有很詳細的介紹,網絡封包分析工具Charles
第五,另外Xcode也能夠安裝不少輔助工具,例如,第三方庫管理工具CocoaPods,壓力測試工具UIAutoMonkey。
第六,Xcode也能夠安裝不少插件,首先介紹一個插件管理的插件Alcatraz,用它來下載以及管理全部插件,我經常使用的插件有,格式化Xcode代碼的ClangFormat,圖片資源提示的KSImageNamed,顏色輔助ColorSense等。
第七,移動開發有一些經常使用的平臺的,比提供社會化分享、統計分析等的友盟,ShareSDK;內測平臺FIR.im,蒲公英;雲測平臺Testin;廣告平臺Google的AdMob服務器

5 書籍 網站推薦網絡

關於看書,對於某一個東西入門的話,其實不適合看書,或者你想看隨便挑一本入門的書就跟着看就行了。
不事後期要精通我以爲幾乎應該把全部iOS好的書看完,我在知乎曾問過有什麼iOS進階的書,這個回答很是中肯,有什麼iOS進階的書推薦嗎?
Code4AppiOS開發社區 – 開源中國社區CocoaChina是國內經常使用的三大代碼庫網站,國外有,技術問答StackOverflow,代碼庫CocoaControls,版本控制的網站GitHub,而且歡迎關注個人GitHub,https://github.com/coderyi
這裏有一個別人整理的iOS學習資料,
立刻着手開發 iOS 應用程序 (apple官方整理),
Aufree/trip-to-iOS · GitHub(資料最全) ,
iOS資源 – Code4App.com ,
iOS開發60分鐘入門 ,
iOS開發重新手到上架
iOS開發路線簡述
6 iOS學習路線圖
最後附贈一張傳智播客的iOS學習路線圖(原圖連接) ,這一些東西只是iOS開發的冰山一角,哪一東西要作好都要學不少東西,學好最重要的就是你對他的熱情,路漫漫其修遠兮,吾將上下而求索。

iosdevstudy

相關文章
相關標籤/搜索