Это выглядело многообещающим, но не похоже на дублирующий вопрос, поскольку он решает проблемы в Swift.
Я завершаю существующий проект Objective C, но NSLog
исчезает, когда я обновляюсь до Xcode 9. Поэтому я ищу некоторые настройки в Xcode, которые позволяют мне продолжать использовать NSLog
для точной настройки проекта.
Основная отладка с использованием ведения журналов для приложений Swift и Objective-C, по-видимому, изменилась в Xcode 9, поскольку сообщения NSLog
больше не отображаются в области отладки. Окно, в котором установлено DEBUG = 1, больше не выглядит как Рисунок 2 Параметр макроса препроцессора DEBUG в проекте Xcode.
В качестве примера я хочу отобразить это строковое сообщение в области отладки с помощью Xcode9.
NSString *outputData = @"This should show in Debug area";
NSLog( @"text: %@", outputData );
Я изучил последнюю документацию здесь или здесь но пока что это не помогло. Также стоит отметить, что ранее область отладки открывалась автоматически при запуске проекта. Поскольку установка Xcode9
больше не делает этого.
Надеюсь, дополнительная информация, представленная в приведенных ниже изменениях, предложит кому-то, где мне еще предстоит посмотреть. Спасибо.
ИЗМЕНИТЬ 1
В области консоли, то есть в нижней правой части области отладки, я выбрал All Output. Поэтому я попытался использовать вывод Debugger и Output, но журнала еще не было.
Я добавил эти утверждения в файл Prefix.pch
#ifndef DEBUG
#define NSLog(...) /* suppress NSLog when in release mode
#endif
Когда я запустил код, в Навигаторе проблем появилось следующее.
Unused variable 'outputData'
ИЗМЕНИТЬ 2
Кажется, что в Xcode9 установить DEBUG = 1 значение DEBUG = 1.
Я вставил макрос DEBUG в файл .pch, используя примеры, предложенные в нескольких сообщениях здесь, здесь, здесь (все довольно старые) и даже здесь (обязательно измените MyLog обратно в NSLog), И в каждом случае я смог сообщить о той же проблеме в навигаторе проблем, но никогда не был в консоли Debug. Аналогичная проблема (с Xcode5
) была решена здесь, скопировав файлы в новый проект, но я хочу этого избежать.
Мое приложение, которое было почти закончено, до сих пор не занималось какой-либо сложной проблемой, к которой обращается унифицированное ведение журнала. Но я смотрел 2016 видео WWDC об унифицированном ведении журнала и читал его файлы слайд-шоу, ища пример того, как использовать соответствующий API для выполнения что-то как основное - напечатайте NSLog
в режиме реального времени до области консоли - так, как я делал до установки Xcode9.
Это может быть неправильный подход. Но я не могу думать о том, как лучше двигаться дальше.
ИЗМЕНИТЬ 3
Стоит отметить, что когда я создал новый проект Objective C с использованием Xcode9 и выполнил указанный выше код, строковое сообщение появилось в области консоли.
Другими словами, используя Xcode9, новый API ведения журнала работает с NSLog,
, но только для нового проекта, а не для одного, созданного с использованием более ранней версии Xcode.
Включить макрос препроцессора DEBUG