2010年3月19日 星期五

iPhone 開發技巧(2) 要不要使用NIB(XIB)?

我們在開發應用程式的時候都會使用InterfaceBuilder的視覺化界面來配製NIB(XIB)內的元件,這樣的確是比較省事,不過說穿了,NIB(XIB)在編譯的時候一樣是去產生一堆code。如果想知道你的NIB(XIB)到底在幹嘛,Adrian Kosmaczewski這位仁兄寫了一套轉換模組nib2objc,可以拿來玩看看。
一般開發者總是會認為從頭到尾都用code去產生的效能會最好,事實上這個觀念也沒有錯,Matt Gallagher 針對 UITableView 的顯示進行了比較,一方是由InterfaceBuilder產生,另一方用code來建立視圖。


不出所料,模擬器上code大勝20%

但是在實機上,一開始Code贏了15%,不過第三個cell之後,卻由NIB(XIB)開始領先了17%。

再經過微調每個儲存格中字型不要自動符合大小 label.adjustsFontSizeToFitWidth = NO 之後,實機上code還是小贏7%

這可以證實不一定每次都是自己寫code效能最好,就算在模擬器上是,但實機上的差距還是微乎其微。除此之外也要取決於你使用哪種view的組件,有些的確在NIB(XIB)上load會比較快。Sam個人的感覺是,你覺個哪個用起來爽就用哪個...如果真的想用code產生,也要有足夠的動機與理由來證實的確比較快,否則只是拘泥在形式上罷了。
大家應該都聽過越獄女神(JailBreaker,JB) Erica Sudan吧?在她的書裡,全部都是用code產生...這是題外話...呵呵

2 則留言:

  1. 用得順手
    別出狀況
    那就好囉~

    回覆刪除
  2. 要寫好效能的程式,就不能這樣想
    就我目前看到國外論壇討論的,用NIB產生UITableView的狀況就很多

    回覆刪除