Перечислите два оператора точки Objective C в заявлении NSLog? - PullRequest
1 голос
/ 28 октября 2011

Если я хочу напечатать два значения, используя оператор точки Objective C с оператором NSLog, я сделал бы это так:

NSLog(@"The height is %i and the width is %i", myRect.height, myRect.width);

Но есть ли способ, которым я могу перечислить высоту и ширину, только упоминая myRect один раз? В конце концов, они из одного и того же объекта и класса. Есть ли какая-то стенография, как это?

NSLog(@"The height is %i and the width is %i", myRect.height, width);

PS. Я знаю, что приведенный выше код не работает, но мне не хватает чего-то, что будет работать аналогично приведенному выше коду?

Ответы [ 3 ]

2 голосов
/ 28 октября 2011

Предполагая, что myRect имеет тип CGSize (поскольку это единственный встроенный тип, имеющий непосредственные члены height и width), тогда ДА :

NSLog(@"myRect: %@", NSStringFromCGSize(myRect));

Также есть NSStringFromCGSize, NSStringFromCGPoint и т. Д. Это встроенные функции, которые выполняют извлечение членов за вас.

2 голосов
/ 28 октября 2011

Вы можете написать свою собственную вспомогательную подпрограмму:

void ReportDimensions(rectangle_t myRect) {
    NSLog(@"The height is %i and the width is %i", myRect.height, myRect.width);
    return;
}

Затем вы можете использовать ее в своем коде так:

rectangle_t r = /* rectangle from somewhere */
ReportDimensions(r);

Это избавит вас от повторного ввода строки иимя объекта снова и снова.Вы даже можете добавить это как метод класса rectangle, если хотите вместо этого написать:

r.ReportDimensions();
1 голос
/ 28 октября 2011

Нет, здесь нет сокращений.

Неразглашаемым соглашением при доступе ко многим полям из одного объекта может быть использование действительно коротких имен для локальной переменной объекта, поэтому вы получите только, например, r.width, r.height.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...