#ifdef DEBUG # define LOG(...) NSLog(__VA_ARGS__) # define LOG_CURRENT_METHOD NSLog(NSStringFromSelector(_cmd)) #else # define LOG(...) ; # define LOG_CURRENT_METHOD ; #endifiPhone デバッグ用のマクロ - Windchase
このマクロをちょっと変えて、クラス名を自動的に出力するようにしました。
#ifdef DEBUG # define LOG(...) NSLog(__VA_ARGS__) # define LOG_CURRENT_METHOD NSLog(@"%@/%@", NSStringFromClass([self class]), NSStringFromSelector(_cmd)) #else # define LOG(...) ; # define LOG_CURRENT_METHOD ; #endif
こんな風に出ます。
[Session started at 2008-12-11 03:09:19 +0900.] 2008-12-11 03:09:22.849 LDRTouch[1014:20b] LDRTouchAppDelegate/applicationDidFinishLaunching: 2008-12-11 03:09:22.851 LDRTouch[1014:20b] LDRTouchAppDelegate/loadUserSettings 2008-12-11 03:09:22.894 LDRTouch[1014:20b] unread items count: 1085 2008-12-11 03:09:22.936 LDRTouch[1014:20b] LDRTouchAppDelegate/reachabilityChanged: 2008-12-11 03:09:22.936 LDRTouch[1014:20b] LDRTouchAppDelegate/executeUnfinishedOperations 2008-12-11 03:09:22.939 LDRTouch[1014:20b] RootViewController/reachabilityChanged: 2008-12-11 03:09:24.756 LDRTouch[1014:20b] LDRTouchAppDelegate/saveUserSettings 2008-12-11 03:09:26.747 LDRTouch[1014:20b] FeedViewController/dealloc 2008-12-11 03:09:26.749 LDRTouch[1014:20b] FeedView/dealloc 2008-12-11 03:09:26.749 LDRTouch[1014:20b] FeedCell/dealloc 2008-12-11 03:09:26.751 LDRTouch[1014:20b] FeedCell/dealloc 2008-12-11 03:09:26.751 LDRTouch[1014:20b] FeedCell/dealloc
UITableViewを使ってデータを表示するアプリケーションの場合、データを更新したときや、画面を移動したときに、消えたオブジェクトがちゃんと解放されているか気になるので、deallocが呼ばれたことが分かるようにしています。
でも、どのクラスのメソッドが呼ばれているか分からないので、クラス名をつけて、区別します。