2

我正在使用 TestFlight 并且我有这个宏来替换 NSLog 的 TestFlight 远程日志记录等价物。

 #define NSLog(__FORMAT__, ...) TFLog((@"%s [Line %d] " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)

我刚刚从 TestFlight 网站复制粘贴了这个,现在我想创建自己的,用于稍微不同的目的。

我希望能够打字...

MyEventLog(@"Something happened.");

...并将其解释为...

[[MyEventLogManager sharedInstance] newLogWithText:@"Something happened"];

我只是不确定语法是如何工作的。

4

2 回答 2

4
#define MyEventLog(message) [[MyEventLogManager sharedInstance] newLogWithText:message]

但是,您会发现提供该方法的可变参数版本很有用,因此您可以将格式文本传递给它:

- (void)newLogWithFormat:(NSString *)format, ...
{
    va_list va;
    va_start(va, format);
    NSString *message = [[NSString alloc] initWithFormat:format arguments:va];
    va_end(va);

    [self newLogWithText:message];

    // If not using ARC, then:
    // [message release];
}

并使用:

#define MyEventFormat(__FORMAT__, ...) [[MyEventLogManager sharedInstance] newLogWithFormat:__FORMAT__, ##__VA_ARGS__]
于 2013-02-21T10:17:12.787 回答
1

你可以看看我的 LoggingEngine,我用的是类似的东西。

#define PBLog(s,...) [PBLog logFile:__FILE__ withLineNumber:__LINE__ andFormat:(s), ##__VA_ARGS__]

在这里你可以看到我调用了方法[PBLog logfile:withLineNumber:andFormat:]

https://github.com/nerdishbynature/PBLog

于 2013-02-21T10:18:13.360 回答