IOS開發涉及有點概念&相關知識點

前言,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,寫完吃飯去。。

相關文章
相關標籤/搜索