2010-02-17 3 views
2

Я делаю что-то действительно немое, и я не вижу его.Что-то действительно немое с возвращаемыми значениями

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

-(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 не форматируется правильно?» Но более запутанный вопрос: «Откуда это число?» Да, я прошел через него с отладчиком, значение гниения изменилось с мусором, с которого он начинается. и это число DOES представляется последовательным.

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

ответ

1

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

+0

Тип возвращаемого по умолчанию для неизвестных методов - id', а не 'int'. – dreamlax

+0

Да, но есть много причин, по которым здесь может быть указано «int» (чтобы назвать только один, может быть метод с тем же именем и тип возврата 'int' в другом классе) и смешанный тип возврата это то, что кажется.Если бы он принимал 'id', он получал бы ошибку, так как этот тип несовместим с поплавками. – Chuck

+0

Извините, я ссылался на ваш оператор. Метод 'showPage' не знает тип возврата' currentOrient', поэтому он интерпретирует значение, возвращаемое как int. Если метод * действительно * не знал тип возврата, он предполагал бы 'id', а не' int'. – dreamlax

1

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

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

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

И угадайте на втором (который я считаю, что вы пытаетесь достичь?):

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

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

+0

1-й вопрос: DUH. Ага. Благодарю. 2-й вопрос. Нет, нет свойства ... И я скопировал код из реальной программы (я упростил его в программе, для отладки, но это текущее состояние ...), и я не думаю, что что-то еще происходит что может быть intefering ... Полная версия из 2 методов размещена. –

+0

Откуда вы берете 'doc'? Если это свойство, вы должны обращаться к нему с 'self.doc' не переменной. –

+0

doc - это только поле участника в объекте AppController (в данном случае). Он * IS * вызывает метод currentOrient. Я проследил это с помощью отладчика ... И да, я думаю, что я должен сделать что-то физическое, например, пойти домой, поужинать, пойти спать и вернуться завтра. B-) –

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