天天看點

ios開發基礎知識

        1.什麼是iOS

        iOS包括了當某個應用程式在iPhone、iPod touch或iPad上運作時所用到的作業系統和技術支撐。iOS的許多技術是基于Mac OS X 桌面系統的,但它畢竟是專門針對移動環境而設計的,是以還擁有許多特有的技術(多點觸摸和加速計)

        開發IOS應用程式得用到SDK(Software Development Kit),裡面包含的你所需要的工具來開發,測試,運作和調試你的應用程式,Xcode是一個強大的IDE(Integrated Development Environment,內建開發環境)),它提供了基本的編輯,編輯和調試功能等等。

        2.架構

        應用程式是由編寫的代碼和 Apple 提供的架構組成。架構包含方法資源庫,供您的應用程式調用。多個應用程式可同時通路一個架構資源庫。您開發的應用程式都會連結多種架構。您可以通過架構的應用程式設計接口 (API) 來利用架構。API(已釋出在頭檔案中)指定可用的類、資料結構和協定.Apple 編寫的架構,預計了您可能想要實作的基本功能。使用架構既省時省力,又可確定代碼高效、安全。系統架構是通路底層硬體的唯一途徑。

        2.1什麼是架構

        架構是一個目錄,包含了共享資源庫,用于通路該資源庫中儲存的代碼的頭檔案,以及圖像、聲音檔案等其他資源。共享資源庫定義應用程式可以調用的函數和方法。

        每個架構都屬于 iOS 系統的一個層。每個層都建立在它的下層之上。盡可能使用較進階的架構,而非較低級的架構。較進階的架構向較低級的結構提供面向對象的抽象。

ios開發基礎知識

        1)Core OS 和Core Services兩個層主要是包含一些底層的架構。例如通路檔案,低級資料結構,這些都是用c語言來實作的。

        2)Media層比較進階。某些部分是c語言的架構。某些部分是基于Objective-C(蘋果開發所使用的程式語言)的架構。像圖檔的繪制、音頻視訊檔案的處理等,都是這個層的任務。正如其名字一樣,可以很清楚的了解到這一層的作用。

        3)Cocoa Touch層的大部分技術都是用Objective-C語言實作的。這層提供的是程式設計時最常用的基本類。該層包含的Foundation framework(基礎架構),提供最常用的資料結構、網絡操作、檔案管理等功能,與UIKit framework(界面工具包架構)并稱為iOS開發的靈魂架構。當然,還有其他一些架構,如照片工具、硬體特征等,也是這個層所包含的。

        2.2 iOS開發的基本架構

        上面提到了Cocoa Touch層及其包含的兩個iOS開發的靈魂架構。下面我們了解下兩個架構的作用以及包含的類集合。

ios開發基礎知識

        2.2.1 UIKit架構

        UIKit架構主要與使用者界面相關,提供基礎結構,用于在螢幕上繪圖、處理事件,以及建立通用使用者界面元素。一般以UI開頭的類都屬于這個架構。

        使用 UIKit:

  •         建構和管理使用者界面
  •         處理基于觸摸和運動的事件(也是和使用者界面相關的)
  •         顯示文本和網頁内容
  •         優化應用程式以實作多任務
  •         建立自定使用者界面元素

        UIKit主要包含以下:

ios開發基礎知識

圖檔來源:iPhone開發入門很簡單(書籍)

        2.2.2 Foundation架構

        應用程式以及 UIKit 和其他架構,都建立在 Foundation 架構的基礎結構之上。Foundation 架構提供許多基本的對象類和資料類型,使其成為應用程式開發的基礎。它還制定了一些約定(用于取消配置設定等任務),使您的代碼更加一緻,可再用性更好。

ios開發基礎知識

圖檔來源:iPhone開發入門很簡單(書籍)

        2.3如何将其他架構連結到項目中來:

        應用程式中還可以使用許多其他架構。決定要使用一個尚未包含的架構時,請将該架構添加到項目,以便應用程式可以連結到它。

        打開一個項目,在“Targets”清單中,點按你的工程,以便向其添加架構。點按項目編輯器頂部的“Build Phases”。點按展示三角形,打開“Link Binary With Libraries”部分。點按添加按鈕 (+) 添加架構。從清單中選擇架構,并點按“Add”。

ios開發基礎知識

        點選add添加,會彈出對話框。

ios開發基礎知識

        2.3代碼與架構:

        您為 iOS 或 OS X 開發應用程式時,不會是完全孤立的。您将沿用 Apple 和其他人的勞動成果,沿用他們在 Objective-C 架構中開發和收集的類。架構是運作時可供多個程序共享的類資源庫;它包含支援采用該資源庫進行軟體開發的資源。Cocoa 和 Cocoa Touch 架構,為您提供了一組互相依賴的類,它們共同工作,以構成應用程式的一部分(通常是相當重要的一部分)。

        應用程式由事件驅動:

        通過考慮應用程式啟動時會發生什麼,可以一窺您編寫的代碼和架構代碼之間的關系。基本上,應用程式建立一組核心對象,然後将控制權移交給這些對象。随着程式的運作,越來越多的對象會被建立,但是程式最初所需的,卻隻是足以處理初始任務的結構(即足夠的核心對象網絡)。有兩個主要任務:

  •             繪制應用程式的初始使用者界面
  •             處理使用者與該使用者界面互動時收到的事件。

        初始使用者界面顯示在螢幕上之後,應用程式由外部事件驅動。最重要的外部事件源自使用者(例如輕觸按鈕)。作業系統将這些事件及其相關資訊一起報告給應用程式。該應用程式(由您的代碼和架構代碼組成)處理事件,并相應地更新使用者界面。

        應用程式擷取事件,并做出響應(通常是繪制部分的使用者界面),然後等待下一個事件。應用程式不斷擷取事件,一個接一個,隻要使用者或其他源(例如計時器)發起事件。從應用程式啟動到終止,它所做的幾乎所有事情,都是由使用者的操作,以事件的形式來驅動。

        擷取事件和對事件做出響應的機制,就是主要事件循環。在應用程式的一組核心對象中,有一個對象(即全局應用程式對象)負責管理主要事件循環。它擷取事件,将事件分派給該對象或能最好地處理事件的對象,然後擷取下一個事件。下圖說明了 iOS 中 Cocoa Touch 應用的主要事件循環。

ios開發基礎知識

        3.設計模式    

        設計模式是一個抽象工具,用于面向對象的軟體開發,以及其他領域。它是一個設計模闆,在特定背景中,解決一般性的、重複出現的問題。是以,設計模式是一種針對特定的、具體的設計的準則:在某種意義上,它是模式的“執行個體化”。在如何應用設計模式上,有一定的靈活性,通常例如程式設計語言和現有架構等事物,會影響如何應用模式。

        最重要的設計模式:模型-視圖-控制器

        “模型-視圖-控制器”(Model-View-Controller) 設計模式,通常被稱為“MVC”,将以下一種角色配置設定給應用程式中的對象:“模型”、“視圖”或“控制器”。模式不僅定義了對象在應用程式中扮演的角色,還定義了對象之間通信的方式。這三類對象的每一個,都由抽象邊界與其他對象分隔,穿過這些邊界與其他類型的對象進行通信。應用程式中某一 MVC 類型的對象的集合,有時統稱為層,例如模型層。

        它們之間的關系如下圖:         

ios開發基礎知識

        模型對象:

        模型對象封裝了應用程式的資料,并定義操控和處理該資料的邏輯和運算。使用者在視圖層中所進行的建立或修改資料的操作,通過控制器對象傳達出去,最終會建立或更新模型對象。模型對象更改時(例如通過網絡連接配接接收到新資料),它通知控制器對象,控制器對象更新相應的視圖對象。

           視圖對象:

        視圖對象是應用程式中使用者可以看見的對象。視圖對象知道如何将自己繪制出來,并可能對使用者的操作作出響應。視圖對象的主要目的,就是顯示來自應用程式模型對象的資料,并使該資料可被編輯。盡管如此,在 MVC 應用程式中,視圖對象通常與模型對象分離。

        控制器對象:

        在應用程式的一個或多個視圖對象和一個或多個模型對象之間,控制器對象充當媒介。控制器對象是以是同步管道程式,通過它,視圖對象了解模型對象的更改,反之亦然。控制器對象還可以為應用程式執行設定和協調任務,并管理其他對象的生命周期。

        由上面的圖我們也可以得到它們之間的運作方式:

        控制器對象解釋在視圖對象中進行的使用者操作,并将新的或更改過的資料傳送給模型對象。模型對象更改時,一個控制器對象會将新的模型資料傳達給視圖對象,以便視圖對象可以顯示它。視圖對象通過應用程式的控制器對象,了解模型資料的更改,并通過控制器對象,将使用者發動的修改(例如,在文本欄輸入的文本),傳達到應用程式的模型對象。使用者在視圖層中所進行的建立或修改資料的操作,通過控制器對象傳達出去,最終會建立或更新模型對象。模型對象更改時(例如通過網絡連接配接接收到新資料),它通知控制器對象,控制器對象更新相應的視圖對象。

繼續閱讀