淺談IOS的代碼布局<一>

來源:互聯網
上載者:User

標籤:

      在我們需要開發一個ios應用的時候,我們通常會首先考慮到應用的開發架構。ios開發基於純程式碼布局和xib,storyboard布局有差異,這裡只討論到純程式碼布局。因為純程式碼的布局在代碼遷移中效率更高,重用更加方便。
      一般一個ios應用會分為logic層(處理邏輯的類),UI層(處理介面的類),網路層(處理網路介面),基礎層(一些第三方控制項或者是自己編寫的工具類),屬性基類(全域性的通用屬性類或者是logic層面用到的特定屬性類)。其中,基礎層和網路層的代碼是可以在每個項目中遷移使用的,所以我們可以把他們封裝起來,製作成一個靜態庫或者是動態庫,方便遷移。
      logic層主要會有哪些內容呢,這裡我把logic定義為MVC中的控制層,也就是Controller,當我們需要製作一個介面的時候,我們通常會首先建立一個類別,就是UIViewController類,(當然我知道很多人喜歡把UIViewController當成了一個介面的集合,就是一個controllor一個介面,logic和介面實現都在這裡面完成)。但是,在這裡,我並不提倡這麼做,以為這樣不利於我們把logic層和UI層切割出來。那麼,我們還有什麼方法呢,我這裡提供一個思路,在我們建立的UIViewController 時,也建立一個UIView,我們把Controller裡面的self.view交給新建立的UIView處理。也就是說,我們可以通過方法去操作介面,而並不是自己內部解決。那麼,我們在logic層中,要做的事情會有處理通知和回調,提交網路申請,狀態和許可權處理等。在大介面的處理中,這裡的代碼可能已經非常的龐大,當然,這裡需要基礎層去分擔很大一部分的繁雜功能。也就是說,logic層,將會是UI,網路,基礎層的彙集中心,他接受他們給過來的資訊,然後處理分發出去,這就是logic層的具體功能。
     UI層會有哪些呢,其實,一個完整的介面,UI層需要做的事情非常的多(他的事情並不比logic層少),所以,我們有必要把UI跟logic徹底的分離開。首先,UI層可能處理的東西遠遠要比你一開始想像的要多,匹配iphone4,iphone5,iphone6(目前iphone5和iphone6用的尺寸比例一樣,但是圖片的@2x,@3x不同,當然有工具能自動識別),ipad,還有可能匹配橫屏,豎屏。光是匹配的UI處理都足夠的將一個簡單的介面變得複雜。如果是一個複雜的UI介面,你可能還會處理到動畫效果,圖文混排(當然,這裡也會需要到基礎層的幫忙)。當然,UI的準系統還是接到logic層的命令,去改變介面的狀態。
     網路層,這個是最簡單的層面,他要做的事情非常簡單,就是介面連結和調試。通常一個常用的網路基類和一個介面分類。一般,50左右的介面放在一個介面分類中是合理的。網路基類比方說是ASIHTTPRequest ,他主要處理掉一些資料的傳輸格式和返回狀態就足夠了。至於分類,則處理介面的參數,傳輸方式(post或get),(返回參數不建議在這裡處理,因為通常會在logic層直接被調用,所以在logic層處理)。當然,可能會有一些視頻,data類型的傳輸,會涉及到斷點續存等,這些,將會由特殊的工具類完成,這裡僅僅用於和背景簡單資料轉送。
      基礎類, 也可以說是工具層,這裡處理一下繁雜但比較通用的功能。比如說動畫操作,圖文混排,輸入欄聊天工具,自訂的相簿還有各種自訂控制項。還有各種各樣的平時用到的功能(所以,一般分為比較複雜的base類和較為簡單的unite類)。一般base類需要由多個檔案配合完成,而簡單的unite則只需要用到一個。
     屬性類,他的功能也十分簡單,全域性的比如說使用者類,或者僅僅用於某些公用情境需要幾個logic層去共同傳遞和使用的特殊類屬性,主要方便於規範傳遞中資料的類型,也可以規範一個logic所要用到的資料類型,這裡可以定義為MVC中的Model。
     到這裡布局架構就介紹完了,到時候在更新圖片啦。

淺談IOS的代碼布局<一>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.