Описание NSObject и описание отладки - PullRequest
33 голосов
/ 21 февраля 2012

Я видел упоминание description и debugDescription для целей отладки, но еще видел точные объяснения того, когда использовать, при каких условиях и при каких условиях они могут давать разные результаты.

Документация NSObject также не содержит ничегона debugDescription.Вопрос: Когда использовать, при каких условиях и при каких условиях их выход будет другим?

Ответы [ 2 ]

39 голосов
/ 21 февраля 2012

Техническое примечание TN2124

Примечание: print-object фактически вызывает метод debugDescription для указанного объекта.NSObject реализует этот метод, вызывая метод описания.Таким образом, по умолчанию описание отладки объекта совпадает с описанием.Однако вы можете переопределить debugDescription, если вы хотите отделить их;многие объекты Какао делают это.

Если у вас реализовано debugDescription, печать объекта в GDB покажет его результат.Зная, что description используется в пользовательском интерфейсе (я знаю, что привязки делают это), вы можете использовать это, чтобы напечатать некоторую дополнительную информацию, которую пользователь не должен видеть.

2 голосов
/ 20 октября 2015

Одно дополнение к тому, что уже было сказано.

Если вы хотите улучшить вывод при работе с po в lldb, вы можете переопределить метод debugDescription. Просто помните, что печать self (самого объекта) вызовет метод description. Если по какой-либо причине <ClassName: objectAddress> не подходит для вас, переопределите этот метод.

Поэтому я хотел подчеркнуть, что для печати self будет вызываться метод description, тогда как po вызывает debugDescription, который по умолчанию вызывает описание. Предоставляя это, вы можете дифференцировать результаты этих вызовов.

...