Улучшенный входящий в систему Objective C
Q: Как я могу добавить контекстную информацию - такую как существующий метод или номер строки - к моим операторам журналирования?
A: Препроцессор C обеспечивает много стандартных макросов, которые дают Вам информацию о текущем файле, номере строки или функции. Кроме того, Objective C имеет _cmd неявный параметр, дающий селектор существующего метода и функционирующий для преобразования селекторов и классов строк. Можно использовать их в Вашем NSLog операторы для обеспечения полезного контекста во время отладки или обработки ошибок.
Пример перечисления 1 журналирования существующего метода и номера строки. Вставьте его в свой проект и посмотрите то, что это распечатывает!
NSMutableArray *someObject = [NSMutableArray array]; |
NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject); |
[someObject addObject:@"foo"]; |
NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject); |
Следующие таблицы приводят самые популярные макросы и выражения, которые могли бы быть полезными в Ваших операторах журналирования.
Макрос | Спецификатор формата | Описание |
|---|---|---|
__ func __ | %s | Текущая функциональная подпись. |
__ СТРОКА __ | %d | Текущий номер строки в файле исходного кода. |
__ ФАЙЛ __ | %s | Полный путь к файлу исходного кода. |
__ PRETTY_FUNCTION __ | %s | Как __ func __, но включает многословную информацию о типе в код C++. |
Выражение | Спецификатор формата | Описание |
|---|---|---|
NSStringFromSelector (_cmd) | %@ | Имя текущего селектора. |
NSStringFromClass ([сам класс]) | %@ | Имя класса текущего объекта. |
[[NSString stringWithUTF8String: __ FILE __] lastPathComponent] | %@ | Имя файла исходного кода. |
[NSThread callStackSymbols] | %@ | NSArray текущего отслеживания стека как читаемые программистом строки. Для отладки только, не представляйте его конечным пользователям или использованию, чтобы сделать любую логику в Вашей программе. |
История версии документа
| Дата | Примечания |
|---|---|
| 04.10.2011 | Расширенные примеры журналирования. |
| 27.10.2009 | Новый документ, описывающий использование макросов препроцессора и функций языка Objective C для обеспечения лучшего контекста в операторах журнала. |