簡體   English   中英

iPhone SDK開發obj-C vs界面構建器

[英]iPhone SDK development obj-C vs interface builder

我是iOS平台的新手。 我不清楚界面構建器的用途。 看起來我可以完全避免使用它,只需在目標c中編寫所有代碼。 我對嗎? IB有什么可以做的但是obj-c不能嗎?

它讓我想起了visual basic 6。

您也可以完全避免使用C並在ARM程序集中編寫所有內容...

InterfaceBuilder有點像編譯器。 它是您使用的工具[希望]讓您的生活更輕松。 它不生成代碼,它會生成描述您的特定接口文件的二進制存檔。 雖然您可以在Interface Builder中手動執行代碼中的所有操作,但這可能會浪費時間。

IB絕對是專業人士使用的。 例如,所有Apple的應用程序都是用IB構建的。

至於與同事共享文件,這絕對應該通過像Subversion,Perforce或Git這樣的修訂控制系統來完成。 雖然你可以通過電子郵件發送你的項目 - 包括xib文件 - 這很容易出錯。 最好使用源代碼管理工具來處理共享和更改跟蹤。

無需使用Interface Builder即可完全編寫所有代碼。 但是,如果您學會使用IB,IB可以讓您的生活更輕松。

您可以避免使用它,就像您可以避免使用數組並創建大量名為thing1thing2thing3等的變量thing1 ,並且可以通過內聯復制和粘貼其內容來避免使用函數。 換句話說:你不必使用它,但你通常會想要。

Interface Builder與Visual Basic不同,它實際上是一個非常有用的工具,真正為大公司工作的程序員實際上構建了他們的應用程序。

不。 Interface Builder旨在讓您的生活更輕松,但您不必使用它。

您是否認為Interface Builder是代碼生成器?

IB本身不生成代碼。 它生成的NIB文件基本上是序列化對象,在加載時會被解壓縮並實例化。

事實上,IB可以很容易地定位您的UI,然后將其置於首位,而不必痛苦地將其全部寫出來而無法在沒有工作應用程序的情況下將其可視化使其成為必不可少的工具。

真正的問題通常是何時使用NIB文件以及何時以編程方式生成視圖。 我最近看到的建議建議在視圖有子視圖時使用在IB中創建的NIB文件。

我已經嘗試了一點IB。 但經過一番嘗試后,我放棄了。 如果您想要更多自定義UI或不通過拉動和拖動控件來中斷您的想法,您最好選擇objective-c代碼作為第一選項。 順便說一下,用objective-c編寫UI並不像android那么容易,因為沒有布局這樣的東西。

你可以在界面構建器中做任何事情,你可以在代碼中做得很好。 如果你喜歡拖動線條並構建像legos這樣的程序,那么界面構建器就很棒了。 如果你更喜歡文本,那么在代碼中進行。

當我編寫代碼時,我也傾向於打開終端。 例如,我使用命令行subverison,即使它是構建到xcode中。 我不會說一種方式或另一種方式更好,這只是你工作方式和思考方式的問題。 我幾乎從不使用界面構建器,但這是個人選擇。

您只能在代碼中執行一些操作,但這些操作非常少見,可以輕松地與界面構建器一起使用。

在界面構建器中還有一些更好的東西。 它很少出現在我身上,但是只要你擁有相當於帶有幾個不同控件的html表單,我認為界面構建器是更好的選擇。 我最終在我的程序中有很多表格,網頁和文本視圖,但填寫的表格並不多。

毫無疑問,nib文件對你來說沒有任何意義,不管怎樣,在代碼中! 實際上,在特定情況下,在代碼中使用nib文件和僅創建這些實例之間的決定可能是一個艱難的決定。 然而,至少有時候,nib文件可以更方便。

將Interface Builder視為創建實例的另一種方式。 一個nib文件包含(在你的想象中)類名(如UIWindow,UIView,UIButton等等)以及如何實例化這些類和配置實例的指令(例如,使這個UIButton成為一個Round Rect,標題為“Tap Me” !“)。

在某些時候,如果加載 nib,則實際創建所有這些實例。

因此,一個nib文件是以圖形方式配置一堆實例的好方法(顯然,當它們是UIView子類時非常有用),並通過加載nib一次性地將它們全部付諸實踐。 如果你有一個大的對象圖 - 一個充滿按鈕,字段和東西的UIView - 在nib文件中進行設計和配置會使你的代碼更簡單,更易於維護。

此外,您可以反復加載相同的筆尖以獲取新實例。 這就是為什么例如在筆尖中設計UITableViewCell是一個很好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM