2009-04-21 15 views
6

Do celów debugowania, chciałbym wyświetlić tyle informacji o klasie, ile mogę, i ewentualnie informacje o środowisku wykonawczym (w którym wątku działa klasa/funkcja itp.) Na konsoli.Jak uzyskać informacje o klasie i środowisku wykonawczym?

Czy istnieje prosty sposób na zrobienie tego z frameworkiem funkcyjnym, zmiennym lub nawet (zewnętrznym)?

P.S: Używam Cocoa Touch.

+0

wielkie pytanie, dzięki! –

Odpowiedz

8

w klasie, jeśli przeciążenie metody -(NSString *)description można łatwo zalogować się informacje o klasie z NSLog(@"%@", some_object);

oto fikcyjny przykład:

-(NSString *)description 
{ 
    return [NSString stringWithFormat:@"%@, %@, %d", 
             [super description], 
             class.object_ivar, 
             class.int_ivar]; 
} 

Można używać standardowych makr C dostać rzeczy takie jak nazwa , plik, numer linii itp ... użyj klas NSThread, aby uzyskać informacje o tym, do którego wątku jest wywoływana metoda.

Wysłałem to do Twittera. http://twitter.com/kailoa/status/1349928820 Zapraszam do śledzenia mnie, jeśli jesteś zainteresowany więcej ciekawostek takich jak ten. Staram się regularnie je układać.

#define METHOD_LOG (NSLog(@"%@ %s\n%@", NSStringFromSelector(_cmd), __FILE__, self)) 
+0

dziękuję, to działa dla mnie. – Jake

+4

'__PRETTY_FUNCTION__' podaje klasę i dowolną kategorię oraz nazwę selektora. Działa również z C++ i Obj-C++. Jeśli planujesz używać debuggera, obiekt-drukowany domyślnie wywołuje '-debugDescription', więc możesz go przesłonić, aby zapewnić bardziej odpowiedni opis debugowania niż ten, który jest zwracany przez' -description'. –

+0

Niesamowite, dziękuję –

Powiązane problemy