iOS開發路線概述


因爲博客遷移至www.coderyi.com,文章請看http://www.coderyi.com/archives/397 ,而且該文章作了很大的修改。git


    iOS系統以及iPhone的出來都要感謝喬布斯,一個完美主義者,從如此優秀的iOS系統和iPhone就能夠看出來。下面就簡單介紹一下我iOS開發的感覺,也是學習iOS開發的一個體系架構。github


1  iOS開發環境



1.1 開發環境

    標準的配置是MacOSX+Xcode。編程

MacOSX的話首選用蘋果電腦,macmini最便宜只要4000多就行了而後本身配一個顯示器,macbookpro 也能夠,不推薦使用macbookair。還有不少人使用黑蘋果或者虛擬機甚至在windows上裝一些工具都是不可取的。windows

Xcode這個開發工具本身繼承了iPhoneSDK,因此不用單獨下載SDK。調試的模擬器能夠從Xcode裏面下載不一樣版本的模擬器。設計模式


1.2  帳號 證書 上架 等

     iOS調試真機是須要證書的,因此這個時候須要從申請一個iDP帳號,應用上傳appstore的話有不少種方法。緩存


1.3  svn 

    Xcode有自帶的svn,我之前用過一個cornerstone,好很差用你用了就知道了。服務器



2 Obejct-C語言



     Object-C語言是C語言的擴展,是一門面向對象的動態語言,它可以和C、C++混合編程。多線程

2.1動態特性

    Object-C具有一些動態特性,包括動態類型、動態綁定、動態加載,也就是Object-C在運行時才能知道一些對象的類型以及所調用的方法。架構


2.2內存管理

OC是使用引用計數原則,如今OC引入ARC(自動引用計數原則)。引用計數有幾個規則,一是誰建立誰釋放,經過alloc、new和copy建立對象,而後調用release或者autorelease去釋放對象,第二是,除了alloc、new和copy以外建立的對象都是autorelease的,第三誰retain了,誰釋放。app

2.3 一些語言特性


     OC首先是隻有單一繼承,沒有多重繼承。

     屬性訪問,@property加上@synthesize使用後可以自動生成setter和getter方法。

     category,中文通常叫作類別,他可以爲現有的類提供新的方法,他將類的實現分散到多個不一樣的文件或框架中,建立對私有方法的前向引用,向對象添加非正式協議。

    block語法,塊,他一般表明小段的自包含的代碼片斷,所以,他們封裝爲能夠並行執行的工做單元額外有用,還能夠用於在集合中進行遍歷,或者在其餘操做完成時做爲回調。塊代替傳統回調函數的意義有兩個:一是他們容許在方法實現的調用中就近寫入代碼,並且塊常常被做爲框架中一些方法的參數;二是他們能夠訪問本地變量。

    OC中有不少類是以NS開頭的,那是cocoa層裏面Foundation框架的類庫。



3 iOS開發


3.1 iOS操做系統簡介

    iOS的系統架構分爲四個層次:核心操做系統層(Core OS layer)、核心服務層(Core Services layer)、媒體層(Media layer)和可觸摸層(Cocoa Touch layer)。


3.2 經常使用的設計模式

    最基礎的是MVC模式,就是把項目分爲Model、View和Controller三層進行管理。

    經常使用的還有代理模式,經過協議實現。觀察者模式的話體如今了KVO和notification上了。target-action模式是OC中很是常見的對象之間方法調用的方式,通常在和UI打交道的時候處理各類GUI上的事件會利用到這種模式,他一般會有一個target做爲消息的接收者。單例模式,使得單例對象在項目中只會建立一次。工廠模式,是一個類族的概念,很符合敏捷軟件開發的開放封閉原則。


3.3 Interface Builder和Storyboard

    通常寫iOS的UI有三種方式。xib,Storyboard以及代碼建立。

    我以前自學用了一會的xib,以後一直用代碼建立,代碼更容易區作多語言版本,並且

xib啓動須要事件比用代碼直接寫慢,xib文件比代碼創建UI文件也大。


3.4 經常使用系統框架

     UIKit是最經常使用的框架,主要是用來作UI的。包括視圖UIButton、UILabel,控制器UIViewController等,還有一些觸摸事件、手勢等。

     QuartzCore、CoreAnimation框架是一些繪圖、動畫的類庫。


3.5數據存儲

    iOS數據存儲主要有四種方式。

    NSKeyedArchiver,採用歸檔的形式來保存數據,該數據對象須要遵照NSCoding協議。歸檔形式保存數據只能一次性歸檔保存以及一次性解壓,只能針對小量誰,並且數據操做笨拙,即若是想改動數據的某一小部分,須要解壓整個數據或者歸檔整個數據。

    NSUserDefaults,用來保存應用程序設置和屬性。

    第三種,Write寫入文件。

     第四種,相對前兩種更爲複雜,但也最好用。SQLite,能夠本身封裝,也可使用FMDataBase等第三方封裝庫,還可使用系統的CoreData。


3.6數據通訊

     iOS的數據通訊有幾種方式,應用層的HTTP,以及傳輸層的封裝TCP或者UDP的socket接口,還有就是藍牙通信。

     HTTP的WebService通常能夠用post、get或者soap等方式請求數據,能夠用系統的NSURL也能夠用第三方類庫ASIHTTPRequest,這兩個類庫均可以作緩存,數據交換的格式通常有JSon和xml。

socket能夠經過c語言的socket和CoreFoundation框架的CFNetwork實現,也能夠用第三方類庫asyncsocket。

    藍牙4.0的話使用的是CoreBluetooth框架。


3.7多線程編程

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


3.8iPad開發

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


3.9其餘

    iOS的地圖是使用MapKit框架,定位用CoreLocation。

iOS有一個雲端機制iCloud,iOS還有一個推送機制,能夠由服務器推送消息到手機應用程序,iOS還能夠作本地化。

    iOS有一些內置的傳感器能夠利用起來編程,好比三軸加速傳感器,用來測加速度的,還有陀螺感應器,測角速度,感知移動的。

    關於iOS的相機、相冊以及音視頻都有相應的類庫。



4   遊戲開發



     遊戲開發用的cocos2d。



5  書籍 網站推薦 



    書籍目前沒有發現什麼好書,可是網站有不少。

    code4app,開源中國,cocoachina是國內經常使用的三大代碼庫網站,國外我會上版本控制的網站github。


6 iOS學習路線圖

    最後給出一個iOS學習路線圖。

相關文章
相關標籤/搜索