Добавить 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.

Другие вопросы по тегам