Привіт! Давно від мене нічого не було чути, проте, я трошки став обізнанішим і сьогодні хотів поділитись однією з фіч. Вивід в лог для нормального програміста - це дуже буденна справа, ібо "No money, no honey" не вивів в лог - не знаєш нічого, проте, як вивявляється цей "honey" дуже ресурсомісткий. На думку включення/виключення логу мене наштовхнув випадок, що нещодавно трапився на роботі, коли на одному проекті після виключення логу час виконання знизився на 1-2 порядки. До того ж, частіше за все стандартним логом є показ того, що в класі А стартував на виконання метод methodB. І ти починаєш лізти в назву класу, "копіпастиш" його назву, потім додаєш назву методу і виходить в тебе щось на кшталкт
NSLog(@"figure#draw#start");
а потім в кінці методу, якщо все гуд відповідно
NSLog(@"figure#draw#finish");
То через десятків два такого мартишковводу поченаєш задумуватися, ну не може ж бути, що немає виходу для такої простої штуки. В нагоді мені стала книжка:
NSLog(@"figure#draw#start");
а потім в кінці методу, якщо все гуд відповідно
NSLog(@"figure#draw#finish");
То через десятків два такого мартишковводу поченаєш задумуватися, ну не може ж бути, що немає виходу для такої простої штуки. В нагоді мені стала книжка:
Beginning iPhone 4 Development Exploring the IOS SDK (існує нове видання Beginning iPhone 5 Development Exploring the IOS SDK )
читаючи дане чудове творіння наткнувся на таку класну річ:
(дана штука повертає назву методу, о чудо із чудес, хвала богам надгризяного яблука). Але на цьому ще не все, даби повістю осягнути глубину всіх наших глубин, треба дістати назву класа. Тут ще простіше ніж я міг собі придумати:
[self class];
Тому напівапогейом нашого щастя є такий запис:
NSLog(@"%@ => %@ start", [self class], NSStringFromSelector(_cmd) );
та
NSLog(@"%@ => %@ fiish", [self class], NSStringFromSelector(_cmd) );
Проте можна сказати ну і що? Глобально нового нічого немає, почекайте, скоро почнеться define magic. Як я вже казав, логи старшно тормозять програми особливо, якщо це телефон + закоментарювать/розкоментарювать явно не надихає. Для себе вихід я знайшов наступним чином:
#define ON_CLASS_LOG
#ifdef ON_CLASS_LOG
#define START_LOG NSLog(@"%@ => %@ start", [self class], NSStringFromSelector(_cmd) );
#define END_LOG NSLog(@"%@ => %@ end", [self class], NSStringFromSelector(_cmd) );
#else
#define START_LOG
#define END_LOG
#endif
Наче все, тепер в коді просто використовуємо START_LOG або END_LOG, пушим в Aple Store вимикаємо ON_CLASS_LOG і буде вам щастя та вашому додатку.
Немає коментарів:
Дописати коментар