2012-06-03 9 views
5

¿Por qué debería establecer la Identidad de clase del propietario del archivo en lugar de la Identidad de clase de mi objeto personalizado que se muestra en el plumín y establecer las conexiones a partir de él? ¿Qué sucede si configuro el propietario del archivo como nulo? Para mí todo funciona bien con el propietario del archivo nil entonces, ¿cuál es la deferencia al hacer la conexión de él?¿Cuál es la necesidad del propietario de File en xcode xib files? ¿Puedo hacer las mismas cosas sin el propietario del archivo?

Respuesta

8

una punta representa un gráfico de objetos archivados. Puede cargarlo y ese gráfico de objetos será reconstituido. Por lo general, quiere/necesita que el gráfico de objetos recién cargado se enganche en el gráfico de objetos ya existente de su programa. No querrás que se separe, desconectado de todo lo demás.

Hay algunas formas en que el gráfico de objeto recién cargado se puede conectar al resto del gráfico de objetos del programa. Una forma es el conjunto de objetos proxy disponibles en un NIB. Hay uno para el objeto de la aplicación. Otro objeto proxy es el propietario del archivo. Un objeto proxy es una cosa que tiene una representación en el NIB pero que en realidad no está contenida en el NIB. A diferencia de los otros objetos en el NIB, los objetos representados por los proxies no se crean cuando se carga el NIB, existen antes de que se cargue el NIB. Los proxies permiten conexiones entre estos objetos preexistentes y los objetos en el NIB. Así es como el nuevo gráfico de objetos del NIB se puede conectar al gráfico de objetos existente de su programa.

MainMenu NIB es inusual. Se carga automáticamente en el inicio de la aplicación por Cocoa, lo que significa que no hay (no puede haber, realmente) mucho en el camino de objetos preexistentes. Ese NIB también suele contener una instancia del delegado de la aplicación, que es una especie de controlador de coordinación. Por lo general, sin embargo, otros tipos de NIB no contendrían controladores de coordinación. (Contienen controladores de mediación, como NSArrayController, pero eso es diferente). Más bien, los controladores de coordinación generalmente se crean en código y, a menudo, son responsables de cargar los NIB.

Por ejemplo, utilizaría un NSWindowController como controlador de coordinación para una ventana. La ventana se definiría en un NIB. El controlador de ventana se crearía una instancia en código, cualquiera que sea el código que decida crear una ventana, y cargaría el NIB. También sería el propietario del archivo del NIB. Gestionaría la ventana y los objetos de nivel superior del NIB.

Si está configurando el propietario del archivo en nil, entonces a) probablemente esté tratando con NIB muy simples en este punto, yb) puede estar filtrando objetos de nivel superior de los NIB que carga.

+0

En el lado izquierdo del constructor de interfaces tenemos 2 secciones. Placeholders y objetos. Lests dicen que creamos una clase MyView en el plumín. Esa clase aparece en la sección Objetos y puedo establecer las conexiones de salida-acción con el plumín. Podría hacer las mismas conexiones si he hecho que la clase propietaria del archivo sea MyView. ¿Cuál es la deferencia de estas dos situaciones? Gracias –

+0

Sería muy inusual para una vista tener un NIB. Además, harías conexiones para dos objetos diferentes. Es como si hubiera preguntado "Puedo establecer las propiedades de un objeto. También puedo establecer las propiedades de otro objeto. ¿Cuál es la diferencia?" Si realiza las conexiones para una vista que está realmente en el NIB, entonces ese es el objeto que se conecta. Si hace conexiones con el propietario del archivo, entonces el objeto que se especifica como el propietario del NIB cuando se carga es lo que se conecta. El propietario no puede ser ninguno de los objetos en el NIB, obviamente. –

5

El propietario del archivo es el archivo que contiene todos los IBOutlets y IBActions para esa vista. Por ejemplo, si tiene una clase "ViewController" y contiene un IBOutlet UIButton *button y -(IBAction)changeViewWhenButtonPressed: (id) sender, la única manera en que puede conectar el tomacorriente y la acción es configurando "ViewController" como el propietario del archivo de su vista.

Estoy relativamente seguro de que Class Identity es sinónimo de File's Owner.

Además, estos enlaces pueden ser útiles:

What are File Owner and First Responder in iPhone SDK - xCode?

File's Owner Definitions

What is File's Owner

+0

Gracias por la rápida respuesta, pero estoy todavía el nivel 1 y no puedo vota arriba .. –

+0

Si pudieras responder a mi comentario sobre Ken sería genial :) –

3

El "propietario del archivo" es la forma en que los objetos en el plumín pueden referirse a objetos fuera del plumín, y viceversa. (También hay formas más complejas de hacerlo, pero no se usan con tanta frecuencia).) Si no necesita hacer eso, no necesita usar el propietario del archivo.

Para la aplicación principal, el propietario del archivo es el objeto Aplicación. Puede que no tenga la necesidad de hacer conexiones, si toda la lógica de la aplicación está en una clase personalizada también instanciada en el plumín y si usa "primera respuesta" para mensajes de acción enviados a la aplicación. Esto esta bien.

Si tiene una ventana de documento o un popover o algo así, con frecuencia el propietario del archivo es el objeto que se está viendo, por lo que es útil poder adjuntarlo. Puede cargar el mismo plumín muchas veces, cada uno 'propiedad' de una instancia diferente de esa clase: un documento diferente o un objeto inspeccionado o algo así.

(Fundamentalmente, el propietario del archivo es simplemente cualquier objeto que se ha pasado al "dueño". Parámetro en el método de punta de carga)

Cuestiones relacionadas