[英]What describes the “File's Owner” best in objective-c / cocoa Nib?
不幸的是,文件所有者的解釋在Apple文檔中非常簡短。 我知道它是一個代理對象。 但關於“文件所有者”對象的真正意義何在? 到底有什么好處呢?
Nib文件通常被稱為“凍干”並准備運行,它們是使您的應用程序更加模塊化的一種很好的方式,可以減少內存使用。 Nib文件可以解凍,或在應用程序需要其中的對象時隨時加載到內存中。
每當nib文件被解凍時,它需要一個指向解凍它的對象的指針。 而該對象通常是文件的所有者。 文件的所有者允許nib文件中的對象訪問nib文件解凍之前存在的對象。 在某種程度上,File的所有者充當新加載的對象和舊對象之間的橋梁。
如果您閱讀並理解nib加載過程,則更容易理解文件所有者參考的含義。
Cocoa的框架代表您自動處理許多nib加載,其中一個Cocoa自帶的內置類用作管理或“擁有”nib文件實例化對象的控制器類。 當您手動加載自己的筆尖時,您可以選擇將哪個類作為文件的所有者。
當您閱讀有關nib加載過程的信息時,請注意許多加載方法的“owner:”參數。 正是這個對象將作為文件所有者連接到nib文件中的對象
我知道它是一個代理對象。
不是。 這是一個真實的對象。 筆尖中的圖標只是代理,因為所有其他圖標代表在筆尖中存檔的對象,而文件所有者則不是。 但是FO不是您應用程序中的代理對象。
但關於“文件所有者”對象的真正意義何在? 到底有什么好處呢?
它是擁有nib中對象的對象。
而已。 除此之外沒什么。
解釋它的最佳方法是舉例說明如何設置它。 假設你有一個NSWindowController子類,它是一個首選項窗口的控制器。 首選項窗口位於名為“首選項”的NIB中。
在您的NSWindowController子類中,您將擁有以下init方法:
- (id)init {
if (self = [super initWithWindowNibName:@"Preferences"]) {
//do initalisation
}
return self;
}
這會初始化窗口控制器,將其與應用程序主包中名為“Preferences”的nib相關聯。 請注意,尚未加載NIB(當您首次在窗口控制器上調用-window時會發生這種情況。
在Preferences NIB中,您將單擊File's Owner圖標,然后轉到Inspector的Class Info面板。 在這里,您可以將類設置為窗口控制器類的名稱(例如,PreferencesController)。 現在,這代表了一個窗口控制器的實例,因此您可以連接出口和操作。
在IB中進行編輯時,它只是對象的代理,就像您拖動到NIB的任何對象一樣,但是當加載NIB時,它將被設置為您創建的窗口控制器。
http://www.cocoadev.com/index.pl?FilesOwner
本質上,加載NibFile的任何對象都成為該nib文件的文件所有者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.