Должен ли я удалять NSLogs при выпуске моего приложения?

Желательно ли использовать NSLog ging в приложении для доставки? Я знаю, что я не должен сильно использовать циклы. Или не записывайте слишком много слов. Но я не уверен, что это хорошая практика.

Удаление всех NSLog до выпуска не похоже на хорошую практику.

Ответ 1

Я считаю хорошей практикой не спамить журнал пользовательских устройств.

Для этого у меня есть макрос DebugLog, который активен только для отладки строчек:

#ifdef DEBUG
#define DebugLog(fmt, ...) NSLog(fmt, __VA_ARGS__)
#else
#define DebugLog(fmt, ...)
#endif

Для всех сообщений журнала, которые мне интересны для разработки, я использую DebugLog. Для всех сообщений об ошибках, которые должны быть зарегистрированы, я использую безусловный NSLog. Таким образом, сборки распределения не загромождают журнал пользовательской консоли. Записываются только важные сообщения.

Ответ 2

Это один из вопросов философии программирования, но в моих производственных приложениях я использую asl и настраиваю его по умолчанию, но оставьте вариант (через запись в Info.plist), чтобы включить различные уровни ведения журнала, Я склонен согласиться с вами, что слишком много NSLog в приложении для доставки выглядит плохо.

Ответ 3

Ведение журнала всегда важно, когда есть определенная команда поддержки для поддержки этого реального приложения, в этом случае они могут проверить, что происходит, и они могут исправить проблему, если какая-то вещь, не связанная с кодом, и если это проблема с основным кодом то они могут перейти к команде Dev.

Но если приложение - это что-то вроде игры, тогда журнал не имеет значения. Вы можете удалить их перед выпуском приложения.

Ответ 4

Это зависит. Если вы не используете средство отчетов о сбоях в вашем приложении, обычно рекомендуется хранить некоторые инструкции NSLog, которые регистрируют критические ошибки, чтобы информированный пользователь мог сообщить об этом вам и помочь вам устранить проблемы с приложением после выпуск. Определенно не рекомендуется иметь слишком много эзотерических отладочных NSLog вызовов в вашем выпуске.

Ответ 5

Если вы хотите, чтобы ваш NSLog работал только тогда, когда вы отлаживаете, и вы не хотите делать какие-либо изменения в коде, лучший способ сделать это в вашем файле .pch:

#ifndef DEBUG
#define NSLog(x...)
#endif

ПОЯСНЕНИЕ И УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ:

Это означает, что если DEBUG не определен, он будет "переопределять" все NSLogs, чтобы ничего не делать, эта замена строки происходит перед компиляцией, поэтому NSLog во всем коде не будет выходить из строя, NSLog не будет оставлен на производстве по ошибке, это устраняет человеческую ошибку, забывая удалить NSLogs в производственных приложениях.

DEBUG обычно определяется в режиме отладки по умолчанию во всех проектах Xcode. вы можете узнать, определено ли оно по адресу:

Build Settings -> 
Apple LLV #.# - Preprocessing -> 
Preprocessor Macros -> Debug

если его нет, добавьте

DEBUG=1

также, если у вас нет файла pch или он не подключен сюда, что вам нужно сделать (потому что он был автоматически добавлен в xcode 5, но больше не добавлен в xcode 6 и по умолчанию по умолчанию в новых шаблонах проектов )

Почему в Xcode 6 автоматически создается ProjectName-Prefix.pch?