Должен ли я удалить NSLogs при выпуске моего приложения - PullRequest
11 голосов
/ 22 января 2012

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

Удаление всех NSLog перед выпуском не выглядит хорошей практикой.

Ответы [ 5 ]

12 голосов
/ 22 января 2012

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

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

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

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

4 голосов
/ 22 января 2012

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

1 голос
/ 22 января 2012

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

1 голос
/ 22 января 2012

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

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

0 голосов
/ 13 февраля 2015

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

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

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

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

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

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

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

DEBUG=1

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...