Подтвердить что ты не робот

Описание NSObject и debugDescription

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

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

4b9b3361

Ответ 1

Техническая нота TN2124

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

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

Ответ 2

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

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

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