我很難理解你的問題。
-initWithNibName:bundle:是UIViewController的指定初始值設定項。如果需要,您可以將nil傳遞給nib名稱和包,在這種情況下,默認行爲是查找與應用程序包中的視圖控制器子類名稱相同的.xib文件。因此,擁有相同名稱的視圖控制器和.xib並不常見,並且只需將名稱和包名傳遞給零即可。但是,您可以有幾個不同的筆尖,都可以使用相同的視圖控制器子類。例如,您可能將一個筆尖沿縱向放置,另一個放在橫向上,然後根據設備的方向決定使用哪一個。
文件所有者是nib中的一個對象,它是加載nib文件的對象的代理。您可以(也應該)設置其類型,以便Interface Builder知道加載文件的對象可以提供哪些插口和操作,從而可以連接到文件的所有者代理。當應用程序運行並且一個對象加載一個筆尖時,該筆尖內連接到文件所有者的任何對象將通過連接到加載該文件的對象來實現。這是nib內部的對象可以與應用程序的其餘部分進行通信的主要機制。因此,儘管文件的所有者和-initWithNibName:bundle:都在加載一個筆尖中發揮作用,他們是非常不同的角色,並且大多是正交的。如果您成功調用了一些視圖控制器,並發現無論如何都加載了nib,則可能是-init調用了-initWithNibName:bundle:並且兩個參數均爲nil,如上所述。