替代NSLog的几种方式

来源:互联网 发布:四三九九网络股份 编辑:程序博客网 时间:2024/05/22 03:45

//DLog will output like NSLog only when the DEBUG variable is set

#ifdef DEBUG

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

//A better version of NSLog

#define NSLog(format, ...) do {                                                                              \

                                fprintf(stderr, "<%s : %d> %s\n",                                           \

                                [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],  \

                                __LINE__, __func__);                                                        \

                                (NSLog)((format), ##__VA_ARGS__);                                           \

                                fprintf(stderr, "-------\n");                                               \

                             } while (0)


#else

#   define NSLog(...)

#endif

//----------------------------------------------------

// ALog will always output like NSLog


#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);


// ULog will show the UIAlertView only when the DEBUG variable is set

#ifdef DEBUG

#   define ULog(fmt, ...)  { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__]  delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }

#else

#   define ULog(...)

#endif


0 0