Добавить NSLog ко всем методам в Objective-C
Можно ли настроить класс так, чтобы каждый метод вызывал:
"NSLog(@"%s", __PRETTY_FUNCTION__);"
до выполнения?
Например, учитывая:
@implementation myClass
- (void) methodA {
NSLog(@"Do something in method A");
}
- (void) methodB {
NSLog(@"Do something in method B");
}
@end
вывод из [myClass methodA] будет:
"- [метод myClassA]"
"Сделай что-нибудь в методе А"
вместо:
"Сделай что-нибудь в методе А"
Спасибо.
2 ответа
Есть умные способы сделать это, но если предположить, что это просто для отладки написанного вами класса и слишком много методов, чтобы сделать это вручную, почему бы просто не использовать Find & Replace?
Примечание: ваша открывающая фигурная скобка находится в конце строки кода, который вы показываете следующим образом: если вы измените свой стиль, вам нужно будет изменить регулярное выражение.
В XCode удостоверьтесь, что сопоставление с образцом включено: щелкните увеличительное стекло слева от поля ввода поиска, выберите Edit Find Options...
затем установите Matching Style
в Regular Expression
Теперь в поле поиска введите:
^-[^{]+\{
Это соответствует: начало строки (^
), тире (-
), а не скобка ([^{]
) один или несколько раз (+
) и, наконец, скобка (\{
).
Сделайте несколько поисков, чтобы убедиться, что он соответствует тому, что вы думаете. Затем в поле Заменить введите:
\0 NSLog(@"%s", __PRETTY_FUNCTION__);
который заменяет то, что было найдено (\0
) с последующим NSLog
вызов.
Повторить процесс можно аналогичным образом, оставив это упражнение.
НТН
Я создал библиотеку специально для такого рода вещей. Проверьте Xcode Logger на GitHub.