2009-10-18 10 views
6

Ho una classe e voglio impostare cosa viene stampato quando chiamo NSLog con quella classe. Ad esempio,NSLog e stampa di un oggetto

NSLog (@ "% @", non standardObject);

Come si imposta l'oggetto in modo che stampi ciò che vorrei?

risposta

14

Ignora il metodo -description. Non richiede parametri e restituisce un NSString che ottiene printf fuori.

C'è un'altra variante chiamata -debugDescription (restituisce NSString, senza parametri) che viene utilizzata quando si esegue l'oggetto da gdb.

+2

Quando si sottoclasse da classi diverse da NSObject, vale la pena considerare l'aggiunta di una chiamata a '[super description]' prima di emettere i risultati per iVar della sottoclasse. – Abizern

+0

@Abizern - solo se hai intenzione di usare la stringa che ti dà 'super'. C'è un'altra ragione per cui vorresti la descrizione di super? –

+0

@Dave. Esattamente, lascia che super gestisca la propria descrizione e la tua classe può gestire l'output per qualsiasi iVar aggiunto. Come ho detto; è qualcosa da considerare. – Abizern