2009-02-28 45 views
28

不幸的是,在Apple文檔中文件所有者的解釋非常短暫。我知道這是一個代理對象。但是,關於「文件所有者」對象的真正含義是什麼?到底有什麼好處呢?什麼描述了Objective-C/cocoa Nib中最好的「文件所有者」?

+0

這個問題也討論了這個:http://stackoverflow.com/questions/789251/is-there-an-easy-to-understand-guide-new-to-cocoa-xcode-etc-for-interface-bui – 2009-05-25 20:40:14

+0

有關文件所有者的解釋:http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html – psychotik 2010-04-19 06:20:59

回答

1

http://www.cocoadev.com/index.pl?FilesOwner

從本質上說,無論對象中加載的NibFile成爲文件的該筆尖文件所有者。

+1

這是不正確的。請參閱http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html – psychotik 2009-10-11 20:13:10

4

我知道它是一個代理對象。

不是。這是一個真正的對象。筆尖中的圖標僅作爲代理,其意義在於所有其他圖標表示對象存檔在筆尖中的,而文件的所有者不是。但是FO不是您應用程序中的代理對象。

但是,關於「File's Owner」對象的真正含義是什麼?到底有什麼好處呢?

它是在nib中擁有對象的對象。

就是這樣。沒有比這更多的了。

+0

謝謝。因此,筆尖中的所有頂級對象都是文件所有者對象的屬性?該文件所有者對象的類在哪裏?我在哪裏可以看到它? – Thanks 2009-02-28 15:03:37

+0

在IB中選擇文件所有者,然後選擇Command-6。你可以通過Class Identity部分來設置文件所有者的類。 – sbooth 2009-02-28 16:01:32

6

如果您瞭解並理解筆尖加載過程,那麼理解文件所有者參考的含義會更容易。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

Cocoa的框架,以您的名義自動處理多種筆尖負荷,用一個可可自身內置擔任管理,或「擁有」筆尖文件的實例化對象控制器類的類。當您手動加載自己的筆尖時,您可以選擇將哪個課程作爲文件的所有者。

當您閱讀有關筆尖加載過程時,請注意許多加載方法中的「owner:」參數。它正是這個對象,將作爲文件的所有者連接到您的筆尖文件中的對象

4

解釋它的最佳方式是如何設置它的一個示例。假設您有一個NSWindowController子類,它是一個偏好窗口的控制器。首選項窗口位於名爲「首選項」的NIB中。

在你的NSWindowController子類中,你將有以下init方法:

- (id)init { 
    if (self = [super initWithWindowNibName:@"Preferences"]) { 
     //do initalisation 
    } 
    return self; 
} 

這初始化窗口控制器,在應用程序的主束將其與筆尖關聯命名爲「首選項」。請注意,NIB尚未加載(當您首次調用窗口控制器上的窗口時會發生這種情況。)

在Preferences NIB中,您將點擊File's Owner圖標,然後進入Class Info面板Inspector在這裏你可以將類設置爲你的窗口控制器類的名字(例如PreferencesController),它現在代表了你的窗口控制器的一個實例,所以你可以連接出口和動作。

在IB中編輯時,它只是對象的代理,就像拖動到NIB的任何對象一樣,但是當加載NIB時,它將設置爲您創建的窗口控制器。

29

筆尖文件通常被稱爲「凍幹」並可隨時運行,它們是讓您的應用程序更加模塊化並減少內存使用量的好方法。當應用程序需要內部對象時,Nib文件可以解凍,或者隨時加載到內存中。

每當nib文件解凍時,它需要一個指向解凍它的對象的指針。這個對象通常是文件的所有者。文件的所有者允許nib文件內的對象訪問nib文件解凍前存在的對象。在某種程度上,文件的所有者充當新加載的對象和舊對象之間的橋樑。

相關問題