A simple way to make your NSLogs and NSAsserts more informative
OK, so I’m not totally radio-silent. I learned about this in a WWDC session, but since it’s already public API in Tiger (actually, it’s a GCC extension), I can talk about it.
It’s a built-in macro called __PRETTY_FUNCTION__
. This is a fully-qualified human-readable signature of the function you’re in. The GCC docs don’t mention this part, but it even works in Objective-C, in addition to C++ and plain C. Here’s a test app, containing this code:
@implementation Blah(blah) - (void)blah { NSLog(@"%s", __PRETTY_FUNCTION__); } @end
And the output:
2007-06-14 07:50:37.733 printmethod[1800] -[Blah(blah) blah]
Notice that it includes the class name, category name (if any), and method selector.
Note that that’s a C-string, not an NSCFString. Be sure to set up your format string accordingly.