2010-06-10 115 views
2

我知道筆尖文件是序列化的對象,他們有所有者,插座進行連接。 使用XCode導航窗口模板我創建了一個應用程序,它按順序創建了2個nib文件 - MainWindow和SecondView。我無法理解MainWindow如何引用SecondView,但據我所知,這兩者之間沒有任何關聯。 SecondView的所有者是UIViewController,在MainWindow中有一個導航標籤,它也是UIViewController。但它們是如何連接在IB我無法理解......與筆尖文件困惑

此外,我不明白誰是 instanciating主窗口的所有者 對象並在該對象正在 保持,哪裏是它是變量 UIApplication myApp = [[UIApplication alloc] init]

這是自我回答:UIApplicationMain並有我需要創建插座的實例變量。

如果我用UIViewController所有者創建10個nib文件,誰會觸發它們的反序列化?

如果某個類是nib文件的所有者,那麼這個類的基本職責是什麼?它是否將nib文件反序列化爲內存?

對不起,沒有組織的問題,我一直在閱讀大量有關nib文件的文章和文檔,但它仍然令人困惑。

回答

1

MainWindow.xib在您的應用程序啓動時加載。

打開MainWindow.xib。確保你在列表視圖。您應該看到一個UINavigationController的實例。在裏面你應該看到一個UIViewController的實例。選擇View Controller實例並查看Inspector Panel。你應該看到它有一個屬性「Nib Name」,它被設置爲「RootViewController」。因此,viewController將在運行時查找並加載「RootViewController」nib。因此,如果您創建10個筆尖,您負責反序列化,但Interface Builder有辦法通過將視圖打包在單個筆尖文件中來幫助您保持筆尖小巧且易於管理。

0

我不確定我是否正確理解了所有問題。但是,在加載應用程序時加載MainWindown(主窗口)筆尖。你可以從你項目的info.plist中驗證。你會在那裏找到主要的筆尖文件的名字。由於在加載應用程序時加載主要的筆尖,對象的所有者就是您的應用程序的實例。

+0

對不起,令人困惑,我知道它是在應用程序啓動過程中加載的,但哪個類是代碼的一部分被觸發加載? 'main'中唯一可加載它的代碼是'UIApplicationMain'函數,那麼在那個函數裏面有一個代碼在讀取info.plist然後反序列化那個nib文件? – Pablo 2010-06-10 11:11:59

+0

確定重新閱讀Apple的文檔後,該部分對我很明顯。加載主要的筆尖發生在'UIApplicationMain'中。但是,我無法得到我的問題的第一部分的答案 - 我們如何將'SecondView'鏈接到'MainWindow'。 – Pablo 2010-06-10 11:21:59