標籤:
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文法,塊,它通常代表小段的自包含的程式碼片段,因此,他們封裝為可以並存執行的工作單元額外有用,還可以用於在集合中進行遍曆,或者在其他動作完成時作為回調。塊代替傳統回呼函數的意義有兩個:一是他們允許在方法實現的調用中就近寫入代碼,而且塊經常被作為架構中一些方法的參數;二是他們可以訪問本地變數。
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作為訊息的接收者。單例模式,使得單例對象在項目中只會建立一次。原廠模式,是一個類族的概念,很符合敏捷式軟體開發 (Agile Software Development)的開放封閉原則。
3.3 Interface Builder和Storyboard
一般寫iOS的UI有三種方式。xib,Storyboard以及代碼建立。代碼更容易區做多語言版本,而且
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的網路服務一般可以用post、get或者SOAP等方式請求資料,可以用系統的NSURL也可以用第三方類庫(MKNetWorkKit、AFNetWorking),這兩種類庫都可以做緩衝,資料交換的格式一般有JSON和XML。
Socket可以通過C語言的Socket和CoreFoundation架構的CFNetwork實現,也可以用第三方類庫AsyncSocket。
藍芽4.0的話使用的是CoreBluetooth架構。
3.7多線程編程
iOS的多線程有NSThread、NSOperation以及GCD。NSThread比其他兩個輕量級,但是需要自己管理線程的生命週期,線程同步。線程同步對資料加鎖會有一定的系統開銷。NSOperation則不需要關心線程管理,GCD是一個替代NSThread和NSOperation的技術。
3.8 iPad開發
iPad和iPhone開發是異曲同工,但是不要試圖去適配iPad和iPhone,因為他們的UI差別太大。
3.9其他
iOS的地圖是使用MapKit架構,定位用CoreLocation。
iOS有一個雲端機制iCloud,iOS還有一個推送機制,可以由伺服器推送訊息到手機應用程式,iOS還可以做本地化。
iOS有一些內建的感應器可以利用起來編程,比如三軸加速感應器,用來測加速度的,還有陀螺感應器,測角速度,感知移動的。
關於iOS的相機、相簿以及音視頻都有相應的類庫。
4 工具
第一是多人協作的問題,你可以用SVN或者Git,Git是比較流行的,但是大多數的公司還在用SVN;
第二,iOS的資料持久化有很多方案,最高效的就是SQLite,在Mac上有很多SQLite的可視化管理工具,我用的是SQLiteManager。
第三,關於查看模擬器或者真機的沙箱內容,模擬器可以使用SimPholders,真機可以用iFunBox;螢幕取色工具,Sip。
第四,關於抓包工具Charles很多人喜歡用
第五,另外Xcode也可以安裝很多協助工具輔助,例如,第三方庫管理工具CocoaPods,壓力測試工具UIAutoMonkey。
第六,Xcode也可以安裝很多外掛程式,首先介紹一個外掛程式管理的外掛程式Alcatraz,用它來下載以及管理所有外掛程式,我常用的外掛程式有,格式化Xcode代碼的ClangFormat,圖片資源提示的KSImageNamed,顏色輔助ColorSense等。
第七,移動開發有一些常用的平台的,比提供社會化分享、統計分析等的友盟,ShareSDK;內測平台FIR.im,蒲公英;雲測平台Testin;廣告平台Google的AdMob
來源:http://www.coderyi.com/archives/397
OC與iOS開發