將IB視爲對象創建者而不是代碼生成器。這真的有幫助。實際上,IB執行的操作實際上是在將對象拖放到桌面/視圖/ XIB窗口時創建對象的實例。然後它允許你開始創建各種連接(用鼠標控制拖動)從一個對象到另一個對象。然後通過從包中解壓縮來實例化整個XIB。這是高度自動化的,讀取UIViewController應該會讓你感覺有些不舒服。請看:
initWithNibName:bundle:
你基本上有兩種類型的連接:
出口:這是你如何教給另一個物體的存在一個對象。例如,你可能有一個需要訪問按鈕的控制器對象。您可以在控制器中創建一個插座(在controller.h文件/屬性區域中的XCode文本編輯或通過添加插座在IB中),然後通過控制單擊並從插座拖動到按鈕。
操作:這是如何觸發一個對象上的事件以調用另一個對象上的方法。行動將有原型:
- (IBAction) someMethod:(id) sender;
我認爲「:(ID)發送者」是可選的,如果你的方法並不需要一個鏈接導致該事件的對象。
在IB,您可以安排對象,並設置不同的屬性,如大小,顏色,位置,目標/行動,用戶交互,文件的所有者...
這使我想到文件的所有者。這裏的大概念。它往往是加載NIB的控制器(好吧:我有一個自定義的窗口控制器,我已經使用了15年以上,但Apple有一個非常好的UIViewController,它具有各種優點),並充當IB中的代理。它實際上並沒有在IB中實例化,但它會在您分配並請求它加載NIB時發生(XIB文件是通過編譯過程變成NIB文件的XML文件)