1. 程式人生 > >StoryBoard的優缺點總結

StoryBoard的優缺點總結

介紹
StoryBoard是蘋果在2011年的WWDC Session 309《Introducing Interface Builder Storyboarding》中介紹的Interface Builder的新功能。其基本想法是將原本的xib進行升級,引入一個容器用於管理多個xib檔案,並且這個容器可以通過拖拽設定xib之間的介面跳轉。而這個容器就是被蘋果稱做的StoryBoard。下圖是一個Storyboard的截圖。


\
 
優點
總體上來說,Storyboard有以下好處:


你可以從storyboard中很方便地梳理出所有View Controller的介面間的呼叫關係。這一點對於新加入專案組的開發同事來說,比較友好。
使用Storyboard可以使用Table View Controller的Static Cell功能。對於開發一些Cell不多,但每個Cell都不一樣的列表類設定介面會比較方便。
通過實現 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法,每個View Controller的跳轉邏輯都聚集在一處,這方便我們統一管理介面跳轉和傳遞資料。
Storyboard可以方便將一些常用功能模組化和複用。例如WWDC2011年介紹Storyboard的視訊就將微博分享功能模組化成一個單獨的Storyboard。我在開發App時,也將例如通過第三方註冊登入模組做成一個單獨的Storyboard,便於以後複用。
缺點
我在新專案使用Storyboard時,卻發現它只是看上去很美,真正用起來,卻有很多問題,我發現的問題有:


首先它和xib一樣,對版本管理是災難。因為是它實際上的多個xib的集合,所以更容易讓多人編輯產生衝突。蘋果對storyboard的設計也不好,基本上你只要開啟,什麼都不做,這個檔案就會被更改,所以衝突幾乎是不可避免的—除非你不開啟,實在不小心開啟看了,需要在提交前回退成伺服器上的版本。
Storyboard提供的 Static cell特性只適合於UITableViewController的子類。我很多時候的用法是一個TableView巢狀在另一個UIView中,static cell就不能用了。
segue的概念對於開發來說並不省事,如果是用程式內部trigger一個segue,那麼需要在另一個回撥的地方設定dest view controller的引數資訊。 www.it165.net
總結
我仔細比較權衡了一下優缺點,最主要的問題是我的版本管理在多人協作開發時將陷入災難,而這是完全不能接受的。而最主要的好處就是,你可以在一個類似白板的地方“一攬眾山小“一樣瞭解所有介面之間的切換關係,但這個有那麼重要嗎?我自已其實很清楚跳轉邏輯,這個只是對新同事瞭解專案程式碼時有幫助,那我花一點時間直接給他講講畫畫不就搞定的嗎?為了這點好處而讓版本管理無法使用,是完全不能接受的。


所以最終我決定放棄使用StoryBoard了,這個“看上去很美”的功能有著不可接受的缺陷。現在看來,它僅適用於做一些Demo的開發。蘋果一直沒有處理好這類視覺化介面設計功能的版本管理,象xib檔案,雖然是xml格式的,但如果多人編輯了,合併起來也會很麻煩。所以業界好多同行都不用xib,直接用純程式碼來寫介面,雖然稍慢一點兒,但是工程很乾淨,也基本沒有了多人協作的版本衝突問題。




轉自:http://www.it165.net/pro/html/201212/4397.html

















相關推薦

StoryBoard優缺點總結

介紹 StoryBoard是蘋果在2011年的WWDC Session 309《Introducing Interface Builder Storyboarding》中介紹的Interface Builder的新功能。其基本想法是將原本的xib進行升級,引入一個容器用於

php各種主流框架的優缺點總結

完成 教程 使用 數據庫操作 準備 對象 多太 php4 mod ThinkPHP ThinkPHP(FCS)是一個輕量級的中型框架,是從Java的Struts結構移植過來的中文PHP開發框架。它使用面向對象的開發結構和MVC模式,並且模擬實現了St

Freemarker優缺點總結

1.什麼是 Freemarker FreeMarker 是一個用 Java語言編寫的模板引擎,它基於模板來生成文字輸出。 使用方式類似JSP的EL表示式。它沒有被繫結到Servlet或HTML或任意Web相關的東西上。也可以用於非Web應用環境中。 它不僅可以用作表現層的實現技術

常見機器學習演算法優缺點總結

一、樸素貝葉斯 1.1主要優點: 1)樸素貝葉斯模型發源於古典數學理論,有穩定的分類效率。 2)對小規模的資料表現很好,能個處理多分類任務,適合增量式訓練,尤其是資料量超出記憶體時,我們可以一批批的去增量訓練。 3)對缺失資料不太敏感,演算法也比較簡單,常用於文字分類

常見的Web伺服器、應用伺服器(Apache、tomcat、jetty、Nginx)簡介及優缺點總結

介紹各個伺服器前,有必要講一下Apache與Tomcat關係,伺服器間的優缺點也是相比於apache與tomcat而言。 Apache是web伺服器(靜態解析,如HTML),tomcat是java應用伺服器(動態解析,如JSP)Tomcat只是一個servlet(jsp也翻譯成servlet)容

java多執行緒(二):建立執行緒的三種方式以及優缺點總結

一、Java中建立執行緒主要有三種方式: 1、繼承Thread類建立執行緒類 步驟: (1)定義Thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run()方法稱為執行體。 (2)建立Thread子類的例項,即建立了執行緒物件。

各常用分類演算法的優缺點總結:DT/ANN/KNN/SVM/GA/Bayes/Adaboosting/Rocchio

1決策樹(Decision Trees)的優缺點 決策樹的優點: 一、 決策樹易於理解和解釋.人們在通過解釋後都有能力去理解決策樹所表達的意義。 二、 對於決策樹,資料的準備往往是簡單或者是不必要的.其他的技術往往要求先把資料一般化,比如去掉多餘的或者空白的屬性。 三、 能夠同時處理資料型和常規型屬性。其他的

機器學習 —— 各類演算法優缺點總結

在我們日常生活中所用到的推薦系統、智慧圖片美化應用和聊天機器人等應用中,各種各樣的機器學習和資料處理演算法正盡職盡責地發揮著自己的功效。本文篩選並簡單介紹了一些最常見演算法類別,還為每一個類別列出了一些實際的演算法並簡單介紹了它們的優缺點。目錄正則化演算法(Regularization Algorithms)

Java中四種常見的單例模式以及各自優缺點總結

餓漢式實現:餓漢式單例模式程式碼中,static變數會在類裝載時初始化,此時也不會涉及多個執行緒物件訪問該物件的問題。虛擬機器保證只會裝載一次該類,肯定不會發生併發訪問的問題。因此,可以省略synchronized關鍵字。問題:如果只是載入本類,而不是呼叫getInstan

redis優缺點總結

優點: 1 讀寫效能優異 2 支援資料持久化,支援AOF和RDB兩種持久化方式 3 支援主從複製,主機會自動將資料同步到從機,可以進行讀寫分離。 4 資料結構豐富:除了支援string型別的value外還支援string、hash、set、sortedset、list等資

MVP 與 MVVM 優缺點總結

專案經驗,如需轉載,請註明作者:Yuloran (t.cn/EGU6c76) 前言 主要闡述 Android App 架構之 MVP 與 MVVM 的優點與痛點,不介紹具體的實現方式。因為 MVP 架構簡單,無需介紹。而 MVVM 架構相對複雜,核心是 LifecycleOwner、Lifecy

KNN演算法優缺點總結,以及機器學習流程的總結

KNN演算法作為一個最簡單,也是一個很實用的機器學習的演算法,日常的使用中也能處理很多問題,這裡做一下總結記錄 優點 1、KNN可以處理分類問題,同時天然可以處理多分類問題,比如鳶尾花的分類 2、簡單,易懂,同時也很強大,對於手寫數字的識別,鳶尾花這一類問題來說,準確率

各大排序演算法優缺點總結

  我這裡只總結各大演算法知識的要點,如果你想看看演算法思想和實現程式碼,網上的其他部落格都很喜歡貼大段程式碼和文字,可以自己去看。   (如果出錯,請指正!感激不盡!) 一.三大簡單、慢速排序演算法 平均 最好 最壞 輔助儲存 穩定性 直接

機器學習常用演算法的優缺點總結

決策樹 一、  決策樹優點 1、決策樹易於理解和解釋,可以視覺化分析,容易提取出規則。 2、可以同時處理標稱型和數值型資料。 3、測試資料集時,執行速度比較快。 4、決策樹可以很好的擴充套件到大型資料庫中,同時它的大小獨立於資料庫大小。 二、決策樹缺點 1、對缺

機器學習常見演算法優缺點總結

K近鄰:演算法採用測量不同特徵值之間的距離的方法進行分類。 優點: 1.簡單好用,容易理解,精度高,理論成熟,既可以用來做分類也可以用來做迴歸; 2.可用於數值型資料和離散型資料; 3.訓練時間

單鏈表的基本操作(讀取、插入、刪除)及優缺點總結

1.單鏈表的讀取 獲取連結串列第i個數據的演算法思路: 1. 宣告一個指標p指向連結串列的第一個結點,初始化j從1開始; 2. 當j< i 時,遍歷連結串列,讓p的指標向後移動,不斷指向下一結點,j累加1; 3. 若到連結串列末尾p為空,說明第i個

SpringBoot優缺點總結

SpringBoot核心功能 spring-boot-starter: Spring Boot的核心啟動器,包含了自動配置、日誌和YAML spring-boot-starter-aop: 支援AOP面向切面程式設計的功能,包括spring-aop和AspecJ s

主流機器學習演算法優缺點總結

1. 決策樹:判別模型,多分類與迴歸,正則化的極大似然估計 特點: 適用於小資料集 優點: 計算量簡單,可解釋性強,比較適合處理有缺失屬性值的樣本,能夠處理不相關的特徵; 缺點: 容易過擬合(後續出現了隨機森林,減小了過擬合現象),使用剪枝來避免過擬合; 適用

java抽象類和介面的優缺點---總結

abstract class和interface是Java語言中對於抽象類定義進行支援的兩種機制,正是由於這兩種機制的存在,才賦予了Java強大的面向物件能力。abstract class和interface之間在對於抽象類定義的支援方面具有很大的相似性,甚至可以相互替換,

MVC,MVP優缺點總結

mvp和mvc的優缺點 mvc是指使用者觸發事件的時候,view層會發送指令到controller層,然後controller去通知model層更新資料,model層更新完資料後會直接在view層顯示結果。 對android來說 activity幾乎承擔