2013-02-21 129 views
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
#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__] 
+0

+1尼斯一个.... – 2013-02-21 10:18:32

+0

优秀,非常感谢:d – Fogmeister 2013-02-21 10:19:22

+0

我一定要我的函数写解释格式?或者NSString格式是完整的字符串?再次感谢 – Fogmeister 2013-02-21 10:24:10

1

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

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

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

https://github.com/nerdishbynature/PBLog

+0

非常好,非常感谢。 – Fogmeister 2013-02-21 10:34:59