Есть несколько других способов сделать это.Очевидно, что нужно создать статический счетчик посещений и NSLog, который генерирует и увеличивает счетчик.Это навязчиво, но я нашел способ сделать это с помощью lldb.
- Установить точку останова
- Запускать программу до тех пор, пока вы не достигнете точку останова в первый раз и не запомните номер точки останова нав правой части строки, по которой вы нажали (например, «Поток 1: точка останова 7.1», обратите внимание на 7.1)
- Щелкните контекстную точку останова и выберите «Изменить точку останова»
- Оставьте условие пустым ивыберите «Добавить действие»
- Выберите «Команда отладчика»
- В командной строке введите «список точек останова 7.1» (используя номер точки останова для точки останова из шага 2).Я полагаю, что вы можете использовать «info break», если вы используете gdb.
- Проверить параметры «Автоматически продолжить после оценки»
- Продолжить
Теперь вместо остановки llvm выдаст информацию о точке останова, в том числе о том, сколько раз она была пройдена.
Что касается обсуждения между Гленном и Майком предыдущего ответа, я опишу проблему с производительностью.где счетчик выполнения функции был полезен: в моем приложении было определенное действие, при котором производительность значительно снижалась при каждом выполнении действия.Профилировщик времени Instruments показал, что каждый раз, когда выполнялось действие, определенная функция выполнялась вдвое дольше, чем раньше, до тех пор, пока приложение быстро не зависло, если действие выполнялось повторно.С помощью счетчика я смог определить, что при каждом выполнении функция вызывается в два раза чаще, чем во время предыдущего выполнения.Тогда было довольно легко найти причину, которая заключалась в том, что кто-то перерегистрировал уведомление в NotificationCenter о каждом выполнении события.Это приводило к удвоению количества вызовов обработчиков ответов при каждом выполнении и, таким образом, к удвоению «стоимости» функции каждый раз.Зная, что оно удваивается, потому что его вызывали в два раза чаще, а не потому, что производительность просто ухудшалась, я стал смотреть на последовательность вызова, а не по причинам, из-за которых сама функция могла со временем ухудшаться.