2012-06-04 11 views
5

Se riesco a caricare un oggetto da un file di pennino senza utilizzare il proprietario del file, qual è il motivo dell'esistenza del proprietario del file? Anche le connessioni di uscita-azione possono essere create senza l'uso del proprietario del file. Per esempio posso creare le connessioni direttamente dall'oggetto al pennino. Quindi, ancora una volta non riesco davvero a capire la necessità del proprietario del file. Ha qualche relazione con il pattern MVC? Il proprietario del file deve essere di tipo UIViewController?Quali problemi possono causare l'annullamento del proprietario del file del pennino?

risposta

4

Durante il caricamento di un file di pennino, Cocoa genera ogni oggetto serializzato nel file pennino. Quindi, per ciascuna connessione nel file pennino, chiama setValue:forKey: sull'oggetto di destinazione per creare la connessione. Alcune connessioni sono all'oggetto nil. I messaggi setValue:forKey: vengono inviati a qualsiasi oggetto viene passato come proprietario del file.

Se non si possiede il proprietario del file, le connessioni nil verranno ignorate. Se non si dispone di connessioni nil, non sarebbe diverso dal fatto di non avere un proprietario di file. Questo non è particolarmente comune.

Tutto questo consente di istanziare più istanze degli stessi oggetti del file di pennino, passando diversi proprietari di file al processo di caricamento.


EDIT:

Ricordate, un file pennino è solo un mucchio di oggetti serializzati. Quando si crea un controller di visualizzazione a livello di programmazione con initWithNibName:bundle:, il controller di visualizzazione esiste già prima del caricamento del file di pennino. Gli oggetti all'interno del file pennino quasi sempre vogliono essere in grado di riferirsi a quel controller di visualizzazione. Quindi passiamo il controller della vista a UINib come proprietario del file. Ovunque il file pennino dice nil, UINib sostituisce quello con il proprietario del file (in genere il controller di visualizzazione).

Questo è molto flessibile, ma la flessibilità non è il punto. Non ci sarebbe alcun modo di fare riferimento al controller della vista all'interno del file del pennino se non lo si è passato durante l'istanza del pennino.

+0

qual è la ragione di avere connessioni a un oggetto nullo? –

+0

"nil oggetto" in IB significa "l'oggetto passato come proprietario file". –

+0

Quindi l'unica ragione di esistenza del proprietario del file è quella di aggiungere più dinamica ai pennini, dandoci la possibilità di cambiarlo durante il processo di caricamento? –

Problemi correlati