Я схожу с ума.Функция должна возвращать float, но она перепуталась!
У меня есть функция, которая должна возвращать число с плавающей запятой:
- (float) getHue:(UIColor *)original
{
NSLog(@"getHue");
const CGFloat *componentColors = CGColorGetComponents(original.CGColor);
float red = componentColors[0];
float green = componentColors[1];
float blue = componentColors[2];
float h = 0.0f;
float maxChannel = fmax(red, fmax(green, blue));
float minChannel = fmin(red, fmin(green, blue));
if (maxChannel == minChannel)
h = 0.0f;
else if (maxChannel == red)
h = 0.166667f * (green - blue)/(maxChannel - minChannel) + 0.000000f;
else if (maxChannel == green)
h = 0.166667f * (blue - red)/(maxChannel - minChannel) + 0.333333f;
else if (maxChannel == blue)
h = 0.166667f * (red - green)/(maxChannel - minChannel) + 0.666667f;
else
h = 0.0f;
if (h < 0.0f)
h += 1.0f;
NSLog(@"getHue results: %f", h);
return h;
}
NSLog будет отслеживать его правильно (т.е.: 0,005), но фактическое возвращаемое значение функции равно нулю.
Я пробовал получать эту ценность по-разному, и она никогда не работает.
float originalHue = [self getHue:original];
приводит к ошибке здания, как это говорит: «несовместимые типы в инициализации»
float *originalHue = [self getHue:original];
результаты в нулевой доходности.
Я пробовал другие способы, но он никогда не получает правильное значение.
Любые мысли?
Приветствия ребята, Андре
ЭТО БЫЛО! Геэз ... это заняло навсегда. Извините за мой вопрос n00bish, но я новичок в Objective-C. Итак, чтобы убедиться, что я понимаю логику: каждый раз, когда у меня есть функция, которая возвращает что-то, я должен объявить ее в интерфейсе? – Andre
Приятная ясновидящая отладка, и я тоже кое-что узнал. –
hahaha good catch :) cheez ... – Manjunath