簡體   English   中英

什么描述了目標-c / cocoa Nib中最好的“文件所有者”?

[英]What describes the “File's Owner” best in objective-c / cocoa Nib?

不幸的是,文件所有者的解釋在Apple文檔中非常簡短。 我知道它是一個代理對象。 但關於“文件所有者”對象的真正意義何在? 到底有什么好處呢?

Nib文件通常被稱為“凍干”並准備運行,它們是使您的應用程序更加模塊化的一種很好的方式,可以減少內存使用。 Nib文件可以解凍,或在應用程序需要其中的對象時隨時加載到內存中。

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

如果您閱讀並理解nib加載過程,則更容易理解文件所有者參考的含義。

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

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM