почему этот код NSLog выводит нули для значений? - PullRequest
1 голос
/ 10 марта 2011

Почему этот код target-c выводит 0 для значений, где, как в отладчике, я вижу, что они имеют значения, отличные от 0:

код

CGRect currFrame = label.frame;                 
currFrame.origin.y = currVertPos;
currFrame.origin.x = 0;
currFrame.size.height = expectedLabelSize.height;
currFrame.size.width = maxWidt  h;
NSLog(@"  currFrame dimensions:x/y/height/width = %d / %d / %d / %d", 0, currVertPos, expectedLabelSize.height, maxWidth);

Что напечатано

currFrame dimensions:x/y/height/width = 0 / 0 / 0 / 0

Ответы [ 2 ]

6 голосов
/ 10 марта 2011

Все эти значения имеют тип CGFloat, но вы пытаетесь напечатать их как int s. Просто замените %d на %f.

P.S. Разработчики Apple вынуждены время от времени печатать CGRect s, чтобы они нашли несколько удобных методов. Попробуйте NSLog(@"currFrame dimensions: %@", NSStringFromCGRect(currFrame)).

2 голосов
/ 10 марта 2011

Поскольку вы используете %d, отсюда форматируется число как целые числа.Попробуйте использовать %f или %lf вместо:

NSLog(@"  currFrame dimensions:x/y/height/width = %f / %f / %f / %f", 0, currVertPos, expectedLabelSize.height, maxWidth);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...