2009-03-16 10 views
10

Sono nuovo di Cocoa e sto lavorando a mio modo attraverso gli esempi nel libro di Hillegass "Cocoa programming per Mac OS-X". Ci sono state un paio di occasioni in cui è stata avviata un'applicazione di esempio con cui sto lavorando e ricevo un messaggio come:Cacao - Tecniche consigliate per il debug dei problemi di collegamento tra XCode e Interface Builder

2009-03-11 00: 39: 19.167 CarLot [7517: 10b] Impossibile creare NSData da oggetto < _NSControllerObjectProxy: 0x188bf0> di classe _NSControllerObjectProxy

l'unico modo che ho trovato per risolvere un problema come questo è quello faticosamente passare attraverso tutte le associazioni e gli attributi nel generatore di interfaccia per vedere dove ho perso un po 'di configurazione - che tutto richiede tempo!

Esiste un modo più efficiente per determinare qual è il problema dal messaggio di errore? Esistono tecniche di debug che puoi utilizzare per rintracciare problemi come questi?

+0

Questa domanda è uno dei problemi che avevo in mente quando ho posto la mia domanda http://stackoverflow.com/questions/623653/how-do-you-read-a-third-party-cocoa-project I Sono molto interessato alle risposte che otterrete. – mouviciel

risposta

3

This Article parla molto brevemente di questo.

In sostanza, si afferma che è possibile cercare nei file Xib per capire un po 'più rapidamente quali binding sono stati impostati nella propria app.

Spero che questo aiuti!

+0

l'articolo è morto –

+0

il collegamento aggiornato per l'articolo è http://www.speirs.org/blog/2007/12/5/what-are-xib-files.html –

1

Non sono sicuro che esista un modo per ottenere un riepilogo dei binding e degli attributi che sono stati impostati diversamente da Interface Builder stesso. Per quanto ne so, questo è l'unico gui che mostra questa informazione. Puoi provare a eseguire la tua applicazione nel debugger e interrompere le eccezioni (- [NSException raise]) per vedere se riesci almeno a rintracciare quale oggetto ti sta dando questo errore, che potrebbe aiutarti a localizzare la cattiva connessione in IB.

Se la tua applicazione è abbastanza piccola e veloce, e stai appena iniziando usando IB e binding, ti suggerisco di creare una connessione e testarla per vedere se funziona e poi passare alla successiva. In questo modo saprai quale connessione o attributo sta causando i problemi.

Spero che qualcuno abbia una risposta migliore di questa, ma per quanto ne so non esiste uno strumento per verificare e individuare i problemi di connessione IB.

0

Cosa succede se si eseguono le associazioni al livello di programmazione anziché farlo in interfacebuilder?

Per fare questo è necessario utilizzare questo metodo di NSObject:

- (void)bind:(NSString *)binding toObject:(id)observableController withKeyPath:(NSString *)keyPath options:(NSDictionary *)options

0

Una cosa che non ho notato in un primo momento era che se si guarda la connessioni ispettore per un oggetto, mostra una bella lista di tutto ciò a cui è legata, e se passi il mouse su un oggetto, evidenzia il suo elemento corrispondente.

Questo è bello per quando hai associato ancora qualcosa a una Colonna della Tabella.

11

C'è un articolo meraviglioso sul sito Dev di Apple sulla risoluzione dei problemi.

http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CocoaBindings/Concepts/Troubleshooting.html

La chiave take-away? C'è un'impostazione chiamata NSBindingDebugLogLevel che puoi utilizzare per ottenere informazioni di debug.

Due modi per impostare esso:

1 - in modo permanente le impostazioni predefinite

defaults write com.yourdomain.yourapplication NSBindingDebugLogLevel 1

2 - Passa come un parametro quando si debug

percorso/to/tuo/app -NSBindingDebugLogLevel 1

Problemi correlati