2009-02-28 3 views
28

Por desgracia, la explicación del propietario del archivo es bastante corto en la documentación de Apple. Sé que es un objeto proxy. ¿Pero cuál es realmente el punto sobre ese objeto "Propietario del archivo"? ¿Para que sirve?Lo que describe el "Manual de Archivo" mejor en Objective-C/plumilla de cacao?

+0

Esta pregunta también trata sobre esto: http://stackoverflow.com/questions/789251/is-there-an-easy-to-understand-guide-new-to-cocoa-xcode-etc-for-interface-bui –

+0

Para una explicación de qué es el propietario del archivo: http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html – psychotik

Respuesta

1

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

En esencia, el que sea objeto cargado el NibFile se convierte en el propietario del archivo para ese archivo semilla.

+1

Esto es incorrecto. Ver http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html – psychotik

4

Sé que es un objeto proxy.

No lo es. Es un objeto real. El icono en la punta es un proxy sólo en el sentido de que todos los demás iconos representan objetos archivados en la punta, y el propietario del archivo no lo es. Pero el FO no es un objeto proxy en su aplicación.

Pero, ¿de qué sirve el objeto "Propietario del archivo"? ¿Para que sirve?

Es el objeto que posee los objetos en la punta.

Eso es todo. Nada más que eso.

+0

Gracias. Entonces, ¿todos los objetos de nivel superior en la punta son propiedades del objeto propietario del archivo? ¿Dónde está la clase del objeto Dueño del archivo? ¿Dónde puedo verlo? – Thanks

+0

Seleccione el propietario del archivo en IB, luego Command-6. Tendrá la sección Identidad de clase que le permitirá configurar la clase para el propietario del archivo. – sbooth

+0

No necesariamente. Puede hacer que el Propietario del archivo sea felizmente inconsciente del contenido de su plumilla si lo desea. Para esto están los puntos de venta: contar un objeto sobre otros objetos. Debe darle al FO al menos una salida a un objeto en la punta; luego lo conectarás en IB. –

6

Es más fácil de entender el significado de referencia el propietario del archivo si se lee y comprender el proceso de carga punta.

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

marcos de cacao manejar muchas cargas para plumillas de forma automática en su nombre, con uno de Cacao propio integrado en las clases de calidad de clase controlador que gestiona, o "dueño" de los objetos instanciados del archivo semilla. Cuando cargas tus propias puntas de forma manual, puedes elegir qué clase servirá como propietario del archivo.

Cuando lea sobre el proceso de carga de la punta, preste atención al parámetro "owner:" en muchos de los métodos de carga. Es exactamente este objeto que se conectará a los objetos en su archivo de punta como propietario

+0

para sumarizar eso: El propietario del archivo es exactamente ese objeto que ha instanciado/cargado el NibFile, por lo que el Nib es algo así como una propiedad de ese objeto. Entonces este objeto es el creador, así que digamos el propietario de ese NibFile. ¿Derecha? – Thanks

+1

Eso es principalmente correcto, con la pequeña advertencia de que un objeto puede cargar/instanciar un archivo de punta sin designarse a sí mismo como el propietario. Como el propietario pasa como un parámetro para cargar un mecanismo, un objeto podría cargar un plumín, conectando otro objeto como propietario. – danielpunkass

+0

Básicamente, cuando cargas el plumín, dices "cargar en algunos objetos desde aquí; este objeto [propietario:] los posee. "Puedes decir que los tienes, o puedes decir que otro objeto los posee; lo haces estableciendo propietario: a uno mismo o a otro objeto. –

4

La mejor manera de Archivo de explicarlo es con un ejemplo de cómo configurarlo. Digamos que tiene una subclase NSWindowController que es un controlador para una ventana de preferencias. La ventana de preferencias está en un NIB llamado "Preferencias".

En la subclase NSWindowController que tendría el siguiente método init:

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

Esto inicializa el controlador de ventana, asociándolo con la punta en "Preferencias" nombrados en conjunto principal de la aplicación. Tenga en cuenta que el NIB aún no se ha cargado (esto sucederá cuando llame por primera vez a la ventana del controlador de la ventana.

En el NIB de Preferencias, haga clic en el icono del Propietario del Archivo y luego en el panel Información de Clase el Inspector. Aquí establecería la clase al nombre de su clase de controlador de ventana (por ejemplo, PreferencesController). Esto ahora representa una instancia de su controlador de ventana para que pueda conectar salidas y acciones.

Al editar en IB, es solo un proxy del objeto, como con cualquier objeto que arrastre al NIB, pero cuando se carga el NIB se configurará en el controlador de ventana que creó.

29

Los archivos de nib a menudo se conocen como "liofilizados" y listos para funcionar, y son una excelente manera de hacer que sus aplicaciones sean más modulares, lo que puede reducir el uso de memoria. Los archivos Nib se pueden descongelar o cargar en la memoria en cualquier momento cuando la aplicación necesite los objetos que contiene.

Cada vez que un archivo de punta se descongela, necesita un puntero al objeto que lo descongeló. Y ese objeto suele ser el propietario del archivo. El propietario del archivo permite que los objetos dentro del archivo nib tengan acceso a los objetos que existían antes de que el archivo de punta fuera descongelado. En cierto modo, el propietario del archivo actúa como un puente entre los objetos recién cargados y los objetos antiguos.

+1

Gracias, buena explicación usando un buen ejemplo. –

Cuestiones relacionadas