2012-05-04 10 views
13

Ad esempio, voglio tracciare le azioni inviate alla mia canPeformAction e sono troppo numerose per essere visualizzate ad ogni occorrenza con un "passaggio del mouse" nel debugger. Pertanto, voglio tracciare il log ed esaminarlo dopo il mio ciclo di test.C'è un modo per stampare l'azione SEL?

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { 
    NSLog(@"%s: sender=%@", __FUNCTION__, sender, action); 
} 
+7

ho trovato la mia risposta: NSStringFromSelector (azione) – mobibob

risposta

34

Volete

NSLog(@"%s: sender=%@, selector=%s", __FUNCTION__, sender,sel_getName(action)); 
+4

'sel_getName()' restituisce una stringa C, non un NSString' '. Usa '% s' per il formato o (meglio)' NSStringFromSelector() '. –

+0

grazie ill edit my asnwer –

+1

Grazie Jacques e Dave - Ho trovato la macro NSStringFromSelector dopo che ho fatto la domanda. +1 e accetta per te. – mobibob

6

Usa NSStringFromSelector per ottenere facilmente un nome stampabile del selettore.

NSStringFromSelector(action)

NSString * NSStringFromSelector (SEL aSelector);

restituisce una rappresentazione di stringa di un selettore.

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { 
    NSLog(@"Action: %@", NSStringFromSelector(action)); 
}