Есть ли метод, который я могу переопределить в моих пользовательских классах, чтобы при
NSLog(@"%@", myObject)
называется, он будет печатать поля (или что я считаю важным) моего объекта? Я думаю, что я ищу Objective-C эквивалент Java toString()
.
objective-c
tostring
nslog
Джордж Армгольд
источник
источник
description
свойство зарезервировано ... и предоставит полезную информацию об отладке! В этом случае вам нужно придумать свое собственное уникальное имя метода.debugDescription
также зарезервирован? Хотя я думаю, чтоDebugDescription
предполагается использовать отладчик, как LLDB.Добавьте это к
@implementation
вашему классу Фото:источник
Вы можете переопределить метод описания NSObject:
На предмет ведения журнала я рекомендую этот пост в блоге для лучшей регистрации в Objective-C.
источник
Есть две функции, которые вы можете использовать.
Это будет отображаться, когда вы помещаете свой объект как, IE параметр для
NSLog
. Другая функция описания:Это будет вызвано, когда вы делаете
po anInstanceOfYourClass
в окне команды отладки. Если у вашего класса нетdebugDescription
функции, то простоdescription
будет вызван.Обратите внимание , что базовый класс
NSObject
делает ужеdescription
реализованы, но это довольно скелетное: он отображает только адрес объекта. Вот почему я рекомендую вам реализовать егоdescription
в любом классе, из которого вы хотите получить информацию, особенно если вы используетеdescription
метод в своем коде. Если вы действительно используетеdescription
в своем коде, я предлагаю вам также реализоватьdebugDescription
, также делаяdebugDescription
более многословным.источник
Это выведет доступные голоса:
источник