Привет, ребята, я нашел этот код, который используется для создания другого NSLog (без данных и временных меток), который отображает класс, в котором был создан журнал, и номер строки. Я читал, что можно отключить ведение журнала только для определенных классов с помощью NO_LOG, но не было объяснено, как использовать его в точности, я совершенно новый для obj-c, и я ценю объяснение того, как отключить ведение журнала для определенных классов и как активировать и деактивировать отладку. благодаряNSLog отключается от определенных классов и DEBUG
#define MAKESTRING(__VA_ARGS__) #__VA_ARGS__
#define TOSTRING(...) MAKESTRING(__VA_ARGS__)
static inline void PxReportv(BOOL doLog, char const *file, int line, NSString *prefix, NSString *fmt, va_list argList) {
if (doLog) {
NSString *fileNameWithExtension = [[NSString stringWithFormat:@"%s", file] lastPathComponent];
#ifdef NO_LOG
NSString *fileName = [fileNameWithExtension stringByDeletingPathExtension];
char *f = TOSTRING(NO_LOG);
NSArray *comps = [[[NSString alloc] initWithFormat:@"%s", f] componentsSeparatedByString:@","];
for (NSString *except in comps) {
if ([except isEqualToString:fileName]) {
return;
}
}
#endif
vprintf([[[NSString alloc] initWithFormat:[[NSString alloc] initWithFormat:@"%@ <%@ [%d]> %@\n", prefix, fileNameWithExtension, line, fmt] arguments:argList] cStringUsingEncoding:NSUTF8StringEncoding], NULL);
}
}
static inline void PxReport(BOOL doLog, char const *file, int line, NSString *prefix, NSString *fmt, ...) {
va_list ap;
va_start(ap, fmt);
PxReportv(doLog, file, line, prefix, fmt, ap);
va_end(ap);
}
#define PxError(...) PxReport(YES, __FILE__, __LINE__, @"[ERROR]", __VA_ARGS__)
#ifdef DEBUG
#define PxDebug(...) PxReport(YES, __FILE__, __LINE__, @"[DEBUG]", __VA_ARGS__)
#define NSLog(...) PxReport(YES, __FILE__, __LINE__, @"", __VA_ARGS__)
#else
#define PxDebug(...)
#define NSLog(...)
#endif
Я переписал свой журнал некогда: [link] (https://github.com/pixelflut/PixLib -OpenSource/blob/master/PixLib% 20OpenSource/PxLogger.m), поскольку я предпочитаю более объектно-ориентированный подход. Это упрощает отключение регистрации в определенных файлах с помощью '[PxLogger setSilenceFiles: @ [" yourFileName "]]' –