2009-10-18 2 views
6

У меня есть класс, и я хочу настроить то, что печатается, когда я вызываю NSLog с этим классом. Например,NSLog и печать объекта

NSLog (@ "% @", нестандартный объект);

Как настроить объект, чтобы он распечатывал то, что я хотел?

ответ

14

Переопределить метод -description. Он не принимает никаких параметров и возвращает NSString, которые получают printf 'd out.

Существует еще один вариант, называемый -debugDescription (возвращает NSString, без параметров), который используется, когда po'ing объект из gdb.

+2

При подклассификации классов, отличных от NSObject, стоит рассмотреть возможность добавления вызова '[super description]' перед выдачей результатов для iVars подкласса. – Abizern

+0

@Abizern - только если вы планируете использовать строку, которую 'супер' дает вам. Есть ли еще одна причина, по которой вам нужно описать супер? –

+0

@Dave. Точно, пусть супер обрабатывает свое описание, и ваш класс может обрабатывать выходные данные для любых добавленных iVars. Как я сказал; это то, что нужно учитывать. – Abizern

Смежные вопросы