次のようなiOS開発のアドバイスを見るのは珍しいことではありません。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// work in background
NSLog(@"%s work", __PRETTY_FUNCTION__);
dispatch_async(dispatch_get_main_queue(), ^{
// update UI on main queue
NSLog(@"%s updateUI", __PRETTY_FUNCTION__);
});
});
これは素晴らしいことですが、問題が発生したときにデバッグするのは難しい場合があります。出力を見てください:
AppName[1051:4013] __47-[Classname methodName]_block_invoke_0 work
AppName[1051:907] __block_global_0 updateUI
最初のログ行にはクラス名とメソッド名があるため、外側のブロックの問題を追跡する可能性があります(このメソッドで多くのブロックを定義していないことを願っています)が、2番目のログ行(内側のブロックから) ?特に、アプリでこのパターンを頻繁に使用している場合は、幸運を祈ります。
コンソール出力とクラッシュログでソースの場所を特定するのに役立つブロック名を付ける方法はありますか?