2010年9月27日 星期一

[iPhone] Logging 利用 NSLog 加上 __FILE__ __FUNCTION__ __LINE__

為了Debug並且在Release的時候不會把Log顯示給用戶看到, 建議加一個 #ifdef, 並且可以利用 __FILE__, __FUNCTION__, __LINE__, 加速Debug的進度.

#ifdef _DEBUG_
NSLog(@"%s %s %d", __FILE__, __FUNCTION__, __LINE__);
#endif

如果要再寫的更漂亮, 可以做一個自己的Class, 再利用這Class做Logging, 能讓程式看起來更簡潔, 不會#ifdef在程式裡面一直重複出現.

例如:
+ (void) log: (NSString *) func: (NSString *) file: (int) line: (NSString *) str{
#ifdef _DEBUG_
NSLog(@"%s:%s:%d:%@", func,file,line, str);
#endif
}

如果有更好的方法, 也請看到的人不吝指教!!

另外找到一篇很cool的方法
http://stackoverflow.com/questions/969130/nslog-tips-and-tricks/969291#969291

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

利用一行#define達成另外一種效果, 真的相當厲害!!

沒有留言:

張貼留言