Что-то действительно глупое с возвращаемыми значениями - PullRequest
2 голосов
/ 18 февраля 2010

Я делаю что-то действительно глупое и не вижу этого.

У меня есть объектный документ с методом:

-(float) currentOrient
{
    return 50.5;
}

В другом объекте я звоню:

-(void) showPage
{

    float rot2=0;
    rot2 = [doc currentOrient] ;
    NSLog(@"SP rotation is %.2f", rot2);
}

Однако вывод:

SP rotation is 1112145920.000000

Нет, один вопрос: "Почему% 2f неправильно форматирует?" Но более запутанный вопрос: "Откуда это число?" Да, я прошел через него с помощью отладчика, значение rot НЕ меняется от мусора, с которого он начинается. и это число кажется последовательным.

Очевидно, что происходит что-то действительно глупое ...

Ответы [ 2 ]

1 голос
/ 18 февраля 2010

Похоже, что метод showPage не знает правильный тип возвращаемого значения для currentOrient, поэтому он интерпретирует возвращаемое значение как int и приводит этот бессмысленный int к float. Вы получаете какие-либо предупреждения? Вы уверены, что правильно импортируете заголовок для currentOrient? Правильно ли объявлен метод currentOrient?

1 голос
/ 18 февраля 2010

Я могу ответить на первый вопрос:

Почему% 2f неправильно форматирует?

Потому что должно быть %1.2f, чтобы округлить до двух знаков после запятой (что, я считаю, то, что вы пытаетесь достичь?)

И угадайте на втором:

У вас есть свойство с именем rot в коде? Кроме этого ... пожимает плечами ... Я не знаю - я предполагаю, что вы упростили пример для публикации на SO, вы взяли другой код, который может иметь отношение? На основании предоставленной вами информации все, что должно быть уткой.

На заметку: когда я бью таких багов, я делаю что-то физическое. Обычно, когда я возвращаюсь, моя голова чиста, и я сразу же нахожу проблему. Вы можете попробовать это тоже! :D

...