Печать структуры с использованием описания - PullRequest
2 голосов
/ 28 сентября 2011

Я хотел бы знать, возможно ли использовать функцию description в среде Cocoa для записи содержимого struct.Например:

    typedef struct {float a,b,c;}list;
    list testlist = {1.0,2.5,3.9};
    NSLog(@"%@",testlist); //--> 1.0,2.5,3.9

Ответы [ 2 ]

6 голосов
/ 28 сентября 2011

Нет. Сообщение description - это метод, обнаруженный в протоколе NSObject, поэтому по определению он должен быть объектом. Однако существует более удобный способ отладки журналов, использующий макрос LOG_EXPR(). Это займет объекты и структуры:

LOG_EXPR(testlist);

Что бы вывести:

testlist = {1.0, 2.5, 3.9};

Этот код можно найти здесь .

1 голос
/ 28 сентября 2011

description - это метод, который может быть вызван только для объекта. В свою очередь, спецификатор формата %@ работает только для объектов, которые отвечают на description.

Вы можете написать свою собственную функцию, чтобы создать симпатичную NSString с содержимым вашей структуры:

NSString * pretty_string_from_list( list l ){

    return [NSString stringWithFormat:@"<list: [%f, %f, %f]>", l.a, l.b, l.c];
}

Затем вызовите эту функцию при входе в структуру:

NSLog(@"%@", pretty_string_from_list(testlist));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...