Это определенно первая вещь, которую я делаю в новом проекте.NSLog(…)
имеет понос во рту .Вот базовый макрос, который позволяет вам получить тишины и покоя .. И регистрировать базовые объекты без раздражающего синтаксиса NSLog(@"%@", xYz);
(вместо этого вы просто NSLog(xYz);
).
#define NSLog(fmt...) NSShutUp(__PRETTY_FUNCTION__,fmt)
#define UTF8FMT(fmt,argL) \
[NSString.alloc initWithFormat:fmt arguments:argL].UTF8String
void NSShutUp(const char*func, id fmt, ...) {
if (![fmt isKindOfClass:NSString.class])
// it's not a string (aka. the formatter), so print it)
fprintf (stderr, "%s: %s\n", func,
[[NSString stringWithFormat:@"%@",fmt,nil]UTF8String]);
else { va_list argList; va_start (argList, fmt);
fprintf (stderr, "%s: %s\n", func, UTF8FMT(fmt,argList));
va_end (argList);
} }
/* SAMPLE RUN */
int main (void) { NSString *a; NSNumber *b; NSArray *c;
NSLog(a = @"Ahh, silence." );
NSLog(b = @(M_PI) );
NSLog(c = @[@"Arrays, baby!"] );
// Old syntax still works.
NSLog(@"%@ * %@ * %@",a,b,c);
return 0;
}
ВЫХОД
int main(): Ahh, silence.
int main(): 3.141592653589793
int main(): (
"Arrays, baby!"
)
int main(): Ahh, silence. * 3.141592653589793 * (
"Arrays, baby!"
)