Qualcuno può spiegarmi come utilizzare initWithNibName e quando utilizzare initWithCoder?Differenza tra initWithNibName e initWithCoder
risposta
Dalla documentazione di Apple:
InitWithCoder codifica un oggetto per l'archiviazione. Un coder ordina all'oggetto di farlo invocando encodeWithCoder: o initWithCoder :. encodeWithCoder: indica all'oggetto di codificare le sue variabili di istanza al codificatore fornito ...
InitWithNibName Restituisce un oggetto NSNib inizializzato nel file pennino nel bundle specificato. Dopo che il file del pennino è stato caricato, l'oggetto NSNib utilizza la mappa delle risorse del bundle per individuare ulteriori risorse a cui fa riferimento il pennino. Se è stato specificato nil per il parametro bundle, l'oggetto NSNib cerca invece quelle risorse nel bundle associato alla classe del proprietario del file del pennino. Se il file pennino non ha un proprietario, l'oggetto NSNib cerca risorse aggiuntive nel pacchetto principale dell'applicazione.
Il primo viene utilizzato per la codifica di singoli oggetti nel codice, quest'ultimo viene utilizzato per recuperare un file NSNib contenente oggetti risorsa.
initWithNibName:
viene in genere utilizzato con un oggetto controller di visualizzazione. L'idea è di avere un file NIB (o XIB, stessa cosa) che ha un UIView
(o NSView
) che hai già progettato in Interface Builder. Quando il tuo controller di visualizzazione si avvia, ha una proprietà view
che dovresti disegnare tu stesso - tranne che lo hai già progettato in IB. Quindi questo costruttore ti permette di aprire il nuovo oggetto controller e dice in quale file NIB cercare la sua vista. La discussione sul cablaggio della NIB stessa per assicurarsi che questo abbia successo è un po 'oltre l'argomento qui.
initWithCoder:
ha un altro compito. Quando hai serializzato un oggetto usando encodeWithCoder:
, alla fine avrai bisogno di unserializzare (o "decodificare") quei dati per trasformarli in un oggetto della tua classe.
In ogni caso, per ricapitolare: implementereste encodeWithCoder:
e initWithCoder:
nella vostra classe solo se desiderate che il vostro oggetto supporti il protocollo NSCoding
. Si utilizza initWithNibName:
(in genere non lo si implementa da soli) quando si desidera attivare un oggetto che può inizializzare le sue proprietà con oggetti archiviati in un file NIB.
C'è una fantastica panoramica di NSCoding
over here.
Storyboard
si dovrebbe preferire -initWithCoder:
al -initWithNibName
dal momento che il primo è invocato solo quando il caricamento di una vista da Storyboard.
- 1. Quando usi encodeWithCoder: e initWithCoder: su iPhone?
- 2. initWithNibName non viene chiamato
- 3. La differenza tra $ * e $ @
- 4. Differenza tra $ # e $ {# @}
- 5. Differenza tra. e #
- 6. MySQL: Differenza tra ",", "e"
- 7. Differenza tra "o" e "||"
- 8. Differenza tra unwrapObservable e()
- 9. Differenza tra oggetto e *?
- 10. Differenza tra "**/* /" e "** /"?
- 11. Differenza tra jquery e $
- 12. CMake: differenza tra $ {} e "$ {}"
- 13. Differenza tra ". +" E ". +?"
- 14. VBA: Differenza tra & e +
- 15. Differenza tra numpy.logical_and e &
- 16. Differenza tra | = e^= css
- 17. Differenza tra `% in%` e `` ==
- 18. Qual è la differenza tra addChildViewController e presentModelViewController
- 19. Parametro che passa con initWithNibName:
- 20. Differenza tra Dizionario e Hashtable
- 21. Differenza tra SCM e SVN
- 22. differenza tra RDLC e SSRS
- 23. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 24. Differenza tra "\ n" e Environment.NewLine
- 25. Differenza tra QSharedPointer e QSharedDataPointer?
- 26. Differenza tra toFixed() e toPrecision()?
- 27. Differenza tra strncpy e memcpy?
- 28. Differenza tra crittografia e hashing
- 29. Differenza tra Assembly.CreateInstance e Activator.CreateInstance?
- 30. Differenza tra coredata e sqlite
ah, sembra che Jordan lo abbia già inchiodato, sotto ;-) –