我不喜歡interface builder的幾個理由

*在文章開頭我還是要先說明一下免得大家誤會,
我在文章說的是”不喜歡”,而不是”反對”或”批判”。

Apple的iPhone SDK貼心的提供了Xcode和interface builder這兩套工具,
然而在我的使用經驗下實在是不太習慣interface builder這套工具,
所以他在我的專案中永遠都只佔5%以下的使用量,
我分享我不喜歡interface builder的理由跟大家分享,
希望對於準備開發或正在開發的同好有參考的價值:

1. 元件生命周期延後與不明確

有寫過objective-c on iPhone的人都知道,
garbage collection你需要自行管理,
還有隨時注意各元件的周期問題,
但是interface builder介入後它會造成一些自動的引用,
而反而造成程式撰寫的困擾。

另外在interface builder中生成的元件,
都必須等到第一個生成周期完才能用他(一般是viewDidLoad),
這會造成一定的困擾。

2. 增加除錯的困擾

在xcode和interface builder中來回切換,
最常發生的問題就是忘記在interface builder中建立連結,
當程式還算小的時候或許不是大問題,
但是當程式規模增加時,
你就會開始覺得他有點難debug了,
尤其是當三更半夜的時候。 Orz

3. 系統的彈性下降

好吧,老實說用interface builder能玩的就是哪幾招,
怎麼每次看別人的app呈現方法可以這麼多變與方便,
別懷疑,那都是別人去hard coding出來的,
我寧願用一個UIView先包裝成一個類別,
從上面去進行一些互動的變化,
再利用通知的機制來進行元件溝通,
這也是我在課程上耳提面命的重要觀念。

4. 程式效能下降

不用懷疑,這是千真萬確的事情,
interface builder所製作出來的app在效能上是輸給hardcoding的,
當然我指的是你真的搞得清楚iOS上app是怎麼運作的,
否則搞不好因為你寫的code太髒反而比interface builder所作的效能更差,
大家一定會問”效能下降一些有重大的問題嗎?”,
對我來說,是的………
別忘了你面對的是一台小小的手機而不是強大的電腦,
他可不是像女人的乳溝擠一擠就有了,
當你要擠的時候常常是沒料可以擠的時候啊。 Orz
(註:我不是沙文主義者,千萬別哄我啊…)

5. 討厭的IBOutlet和IBAction

沒錯,我討厭他…..
老實說xcode並不是一個太聰明的工具,
如果跟Flash Builder, Netbean, Visual Studio比起來遜太多了,
當你宣告完一個IBoulet或IBAction是不會有任何提示的,
你所能做的是自己從寫完的interface中複製貼上到class上,
這點讓我特別的感冒,
或許在下一版中能夠修正也說不定。

——————————————————————————-

好處當然也是有的

1. 初學者的好朋友

初學者一定會特別喜歡他,
因為看起來好像會讓事情變得簡單,
但是我也必須說他可能也是初學者的殺手,
例如我一個朋友花了11次寫Hello World,
我猜想這可能要歸功給interface builder。

2. 視覺化的布局方法

的確是在視覺上interface builder是大勝的,
目前來說在iOS開發上應該沒有一個比這更好的視覺化方法,
但是我還是希望他可以引入像是Flex或是Android上Tag的方法,
不過依照Apple的個性應該很難吧….  *苦笑*

最後還是補充說明一下,
我不是說interface builder很爛不要用,
只是依我的開發專案習慣實在會造成些困擾,
尤其是在元件生成時間這件事上,
所以我都是盡量避免使用interface builder,
除非是一些非重要的UI或不需維護的畫面。

本篇發表於 Objective C 與標籤於 anistar固定網址書籤。
本文引用:
文章內容為ANISTAR BLOG所有,引用分享請以鏈結形式註明出處與原始作者。

關於 anistar

現任:台灣區 Yahoo! 專長: Objective C、iOS SDK、Android SDK、Flex 4、RIA、ActrionScript 3、HTML5、CSS3、JQuery、JQuery Mobile、C++、PHP、MySQL...等整合運用。 著作:《Run!PC雜誌》專欄作家、《CADesigner雜誌》專欄作家、《Flash CS3 Professional ActionScript 3.0 打造互動設計力與美》、《新一代互動體驗Flex+AIR程式開發》。 認證:Macromedia Certified Instructor in ColdFusion    Adobe Certified Expert in Photoshop    Adobe Certified Instructor in Flex

4 則迴響於《我不喜歡interface builder的幾個理由

  1. 在您這邊潛水很久了,但很這篇說的真的是深得我心
    我當時也是跟您朋友差不多,光hello world就寫了三天,就是拜這個該丟進垃圾桶的Xcode所賜
    老實說,我對Xcode的評價是—–>反智
    寫程式寫了六年,第一次遇到IDE的邏輯及使用竟然比hard coding還複雜的
    不過蘋果迷似乎不知道世界上還有比Xcode好用及成熟百倍的IDE
    在他們眼中,大概只要是蘋果出的就是最好吧

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *