前言,IOS是基於UNIX的,用C/C+/OC直通系統底層,不想android有個jvm。html
首先仍是系統架構的分層架構java
1.核心操做系統層 Core OS,就是內存管理、文件系統、電源管理等android
2.核心服務層 Core Services,包含地址本,像集合、線程、網絡、文件、數據庫訪問等都在這裏,由於foundation就在這c++
3.媒體層 Media,音頻、視頻、圖形繪製及動畫等web
4.可觸摸層 Cocoa Touch,這個最主要可視化組件都在這裏,oc開發大多也在這,UIKit就在這sql
5.應用程序層 Appliction,就是App啦數據庫
開發主體相關安全
1.OC,還有c、c++,這個沒啥說的,就是開發語言,這個在C語言及OC語言區別概括差很少(固然還有個複雜些的屬性等,看何時在那邊補充下)網絡
2.SDK,經常使用類庫有Foundation(基本數據類型等都在裏面)、UIKit(UI必用)等多線程
3.XCode,也沒啥說的,就開發工具。裏面集成了IB界面開發、Instrument性能及內存溢出排查等強大功能
開發用到相關知識點及概念
1.UI相關
A.MVC開發模式、(委託)代理模式、通知機制(Notif&Apple Push)
B.InterFace Builder,就是UI的集成開發工具
C.StoryBorad,界面佈局文件---獨立開發建議使用,就是多個xib(運行時轉成nib)一塊兒,保存UIView界面相關聯繫信息
D.UIKit,前面提到,包含系統自帶控件視圖,如基礎的 UI(Button、TextField、Label、AlertView等),
還有高級的UI(TableView、TabBar),各個ViewController,順便說下UI中幾個重要類
1.UIApplication,啓動時設置代理AppDelegate(裏面有幾個App生命週期)開啓消息循環監聽事件的
2.UIView,全部開始控件基類,什麼UIWindow、UIControl(如button、textField等的父類)等繼承與他,經常使用addSubView等方法
3.UIViewController(內部有個UIView),控制類基類,像TabBar,導航就繼承與他;通常和xib對應,而裏面的File‘s Ower能夠認爲就是Controller
E.也說下啓動機制:啓動->加載配置->mian函數->UIApplicationMain->建立UIApplication(啓動監聽)
->加載UIWindow(一個)->調用Controller的makeKeyAndVisible去loadView(一次)&viewDidLoad->好像就沒了
固然加載(建立)視圖也是有個獨立判斷過程,這裏就很少作闡述。而裏面還涉及兩個文件:Info.plist,應用程序配置文件;還有個main.m,app入口函數文件;
F.UI你還有個OI提下,如IBOutlet&IBAction,還有addTarget等; 特殊事件,如觸摸、手勢、鍵盤等
G.手寫界面,經常使用手動定位置形狀的CG,常見幾個屬性區別
1.frame:控制位置和大小,以父級視圖的左上角爲原點
2.center:控制位置(中心點)
3.bounds:控制大小,以本身的左上角爲原點
H.第三方框架,如Quartz-X(CaLayer、2D、自定義控件等)、CoraAnimation(核心動畫)
I.Bundle,這個也在UI裏提下吧,是用來管理文件資源的東西。注:Android也有個Bundle,可是用來封裝Activity之間要傳遞信息的。
2.數據存儲,MD,總算好像把UI部分涉及寫完了下!
A.文件存儲,xml操做
B.數據庫sqlite及FMDB(第三方封裝API)
C.CoreData,就是個Orm,即DB互轉OC對象,但性能、跨平臺等問題
3.網絡
A.NSUrlConntcion、NSUrlSession、CFNetWork、AFNetWorkting等的實用
B.Http(ASI),ASIHttpRequest(get&post、同步&異步);webServices、Socket、(SB)Json&xml等等
C.ICould(雲技術)、推送push也該也算網絡裏,UIWebView應該也算吧?至於網絡安全則也大致和web相同的。。
4.多線程
NSThread(RunLoop)、NSOperstion(子類)、線程池Queue,NSLock(@synchronized)、GCD(串並行、Dispatch)
5.多媒體
音頻、視頻、相機、錄音,通話等,這些通常應用型也用不到(起碼一期應該不會)
一些冷門,我不搞他不清楚啊
1.LBS開發,開發移動定位相關、MapKit、CoreLocation等
2.沙箱機制,編譯後的目錄結構獨立運行環境
3.遊戲開發,如Cocoad-x,Utility-3D等,哦還有個叫OpenGL的,挺高級的,不過我不搞的。。
4.什麼感應器,重力、熱力等好像
補充個UIView 切換&傳值(摘自網上)
1.切換:
A.UITabBarController 視圖都會進行初始化即便當前不顯示在界面上,相對比較佔用內存。
B.UINavigationController 以棧的方式管理視圖,各個視圖的切換就是壓棧和出棧操做,出棧後的視圖會當即銷燬。
C.UIModalController 以模態窗口的形式管理視圖,當前視圖關閉前其餘視圖上的內容沒法操做。
2.傳值:
A.採用代理模式
B.採用iOS消息機制
C.經過NSDefault存儲(或者文件、數據庫存儲等)
D.經過AppDelegate定義全局變量(或者使用UIApplication、定義一個單例類等)
E.經過控制器屬性傳遞
PS,
以上就是我所知道的,基本的IOS開發相關知識,應該大致也就這些了吧。。。細節例子網上N多,可自找~
其實主要仍是OC加UI,IOS最難應該仍是OC,特別是排錯能力、要求必須很理解OC。
寫完這又有興致想寫個Android 的先~由於Android和IOS開發知識結構很像,也是java語言+UI+網絡+本地資源等等。
暈思想跨度大大的。。。ok,寫完吃飯去。。