從今天開始學習iOS開發(iOS 7版)–構建一款App之App開發過程

發表於2014-03-18
構建一款App之App開發過程App開發過程設計使用者介面定義互動

教程: Storyboard

(構建一款app一章中包含四個小節:App開發過程、設計使用者介面、定義互動以及教程,本文是第一小節)

App開發過程

雖然開發一款app可能會令人心生畏懼,但這個過程可以被分為幾個容易理解消化的部分。在你首次開發app的過程中,這些步驟將幫開啟app開發之旅併為你指引正確的方向。

 220140318113447
定義概念每款偉大的app都始於一個概念。直達概念最有效的方法是思考你想通過app解決什麼問題。偉大的app只解決一個定義明確的問題。比如設定應用程式允許使用者調整裝置上所有的設定,它為使用者提供了單個介面來完成相關的設定任務。

以下直達概念需要考慮的一些關鍵問題:

1.你的使用者是誰?應用程式的概念和體驗將會根據你是要開發一款兒童遊戲、一個to-do list應用還是一個學習測試app而所有不同。

2.應用程式的目標是什麼?對app而言,有一個清晰的目標非常重要,而理解是什麼因素促使使用者使用app是界定應用程式目的的一部分。

3.你的應用要解決使用者什麼樣的問題?一款app應當解決使用者的單個問題,而不是為多個不同的問題提供解決方案。如果你發現你的應用程式正試圖解決不相關的問題,那你可以能要考慮開發多個app了。

4.你的應用程式包含什麼內容?考慮你的應用程式為使用者提供什麼內容,以及使用者如何與之進行互動。通過使用者介面設計對app呈現的內容型別進行補充。

在應用程式開發之初,app的概念並不需要多吸引人,也不需要是一個完整的概念,但可幫你釐清將要去往何方以及到達目的地所需的東西。

設計使用者介面

在你有了app概念之後,建立一個成功應用程式的下一步就是設計一個優秀的使用者介面。使用者需要以最簡單的方式與app進行互動。設計介面的時候要始終考慮到使用者,並使介面保持高效、清晰以及簡單直接。

在使用者介面設計過程中,最大的挑戰可能是把你的概念落實到設計當中,並實現該設計。為了簡化這個過程,你可以使用storyboards。 Storyboards可以讓你通過使用圖形介面一步完成介面的設計與實現。你可以準確知曉當前正在建立的一切,對哪部分執行正常與否獲得即時反饋,並對介面進行即時視覺化的改變。

使用storyboard建立使用者介面,你就是在與views打交道,View就是用來向使用者展示內容的。在Tutorial: Basics中你開始在storyboard場景中使用單個檢視為ToDoList app建立使用者介面。如果你要開發更為複雜的app,那你將使用更多場景和檢視來建立使用者介面。

在Tutorial: Storyboards中,你將通過使用幾個不同檢視來展示不同型別的內容,從而為ToDoList app建立使用者介面。你可以在“Designing a User Interface”中學習更多關於使用views和storyboards來設計和建立使用者介面。

定義互動

如果沒有邏輯支撐,一個介面並沒有很大用處。建立介面後,你得通過程式碼來定義使用者與介面的互動,並在介面上對使用者的操作做出反饋。

在考慮為應用新增行為之前,理解iOS app是事件驅動程式設計非常重要。在事件驅動程式設計中,app的工作流由事件:系統事件或者使用者操作來決定。使用者在介面上執行操作會在app中觸發事件。這些事件會執行app的邏輯並進行資料處理,然後app對使用者操作的響應會反饋到介面上。

當定義使用者與介面的互動時,你要把事件驅動程式設計牢記在心。因為使用者在控制著何時執行app程式碼的特定部分,而不是開發者,你想要確定使用者可以執行哪個操作,以及對這些操做給予什麼樣的反饋。

你在檢視控制器中定義大部分事件響應邏輯。你可以在“Defining the Interaction”中學會更多關於使用檢視控制器的內容。之後,你將會在Tutorial: Storyboards中,把這些概念應用於為ToDoList app新增功能和互動。

執行行為

在定義完使用者可在app中執行的操作後,你需要通過程式碼實現這些行為。

為iOS app寫程式碼,其實很多時候你是在與Objective-C程式語言打交道。你將在第三個模組學習更多關於Objective-C的內容,不過現在你需要了解一些關於該語言的基本詞彙術語。Objective-C是在C語言的基礎上進行了擴充,並提供了物件導向的效能和dynamic runtime。你會在Objective-C中看到很多熟悉的元素,比如primitive types (int, float, and so on), structures, functions, pointers以及control flow constructs (while, if…else, and for statements).你也可以訪問標準的C庫例程,比如stdlib.h和stdio.h中的那些宣告。

物件是app的建築模組

當你建立iOS app時,你大部分時間都花在了使用物件上。

物件用相關行為來封裝資料。你可以把應用程式當做一個包含相互連線的物件的大系統,這些物件相互溝通以解決某個特定問題,比如展示視覺化的介面,響應使用者的輸入,或者儲存資訊。你可以使用多個不同型別的物件來建立應用程式,從介面元素(比如按鈕和標籤),到資料物件(比如字串和陣列)。

類是物件的藍圖

類是對任何特定型別物件的行為和共同屬性的描述。

多個以相同方式根據相同藍圖構建的building在結構上是完全相同的,類的每個例項和該類的其他例項共享相同的屬性和行為。你可以編寫自己的類,或者使用已經為你定義好的框架類。

你通過建立某個特定類的例項來建立物件。你可以通過可接受的預設值進行分配和初始化。當指定一個物件時,你要為物件留出足夠的記憶體,並把所有例項變數設定為0。

Initialization設定一個物件的初始化狀態–也就是說,它的例項變數和屬性–至合理的值,並返回物件。初始化的目的是返回一個可用的物件。你需要指定和初始化一個物件,以便可以使用它。

Objective-C中的一個基本概念是類的繼承,一個類繼承了其父類的行為。當一個類繼承自另一個類,那麼子類繼承了父類定義的所有行為和屬性。子類可以定義自己額外的行為和屬性,或者覆寫父類的行為。所以你可以擴充套件類的行為,而無需複製類現有的行為。

物件通過資訊進行通訊

物件執行時通過互發資訊進行互動。在Objective-C術語中,一個物件通過呼叫該物件上的方法來向另一個物件傳送資訊。

雖然有多個方法可在Objective-C物件之間傳送資訊,但目前最常用的方法是使用方括號的基本語法。如果你有一個XYZPerson類物件somePerson,你可以像下邊這樣給它傳送sayHello資訊。

下圖左邊是訊息的接收者somePerson。右邊sayHello是呼叫接收者的方法的名稱。換句話說,當執行以上程式碼,somePerson將會接收到sayHello資訊。

320140318113501Protocol定義訊息契約protocol定義了一組在特定情況下的預期物件行為。protocol採用程式設計介面形式,一個任何類都可以選擇實現的形式。使用protocol,兩個通過繼承關係較遠的類能相互通訊以完成某個特定的目標,比如解析XML程式碼或者複製物件。
420140318113513
為其他類提供有用行為的類可為匿名傳送該行為宣告程式設計介面。任何其他類可以選擇採用protocol,利用行為實現一個或多個該協議的方法。合併資料在執行了應用行為後,你可以建立一個資料模型以支援app的介面。一款應用的資料模型定義了你在app中維持資料的方式。資料模型可以從物件的基本字典變成複雜的資料庫。

你的應用程式的資料模型應該反映app的內容和目的。介面和資料之間應該有一個清晰的相關性,即便使用者並不會直接與資料進行互動。

一個好的資料模型非常有利於為app建立一個堅實的基礎。也讓建立一個可擴充套件的應用變得更加簡單,改善應用功能,並對應用特性做出更改。你將會在“Incorporating the Data”中學到更多關於定義資料模型的內容。

使用正確的資源

設計模式是解決應用程式中常見問題的最佳實踐。使用設計模式可幫你明確資料模型的結構,以及其與app其他部分之間的互動。若理解並使用正確的設計模式,你就可以更加簡單高效地建立應用。你將會在“Using Design Patterns”中學到更多關於設計模式的內容。

當你開始實現你的模型時,記住你無需從零實現每一步,已有大量框架為你構建自己的應用提供了既有的功能。例如Foundation框架包含了代表基本資料型別的類–比如字串和數字–以及儲存其他物件的集合類。可能的話,推薦你使用既有的框架類–或者他們的子類來新增應用的功能–而不是檢視重新實現它們的功能,這樣你就可以建立出一款高效的實用的精細的應用程式。你將在“Working with Foundation”中學習到更多關於Foundation框架的知識。

通常,你會編寫自定義類作為資料模型的一部分。編寫自定義類可以讓你掌控如何組織應用的內部結構。你將在“Writing a Custom Class”中學會更多關於編寫自定義類的知識。

合併真實資料

當首次測試資料模型時,你可能會想要使用靜態或者偽造的資料。這種方法你不用擔心要提供真實的資料,直到模型裝配和連線正確。在定義好的資料模型正常工作後,你就可以把真實資料置於應用中。該指南剩餘的部分可以幫你遍歷這些步驟中的每一個細節。隨著你在“App Development Process”中的學習,你會在該教程中學會必要的概念並運用到實踐中。

相關文章