Ошибка и предупреждение с использованием функции GetTiming () для CAKeyframeAnimation - PullRequest
0 голосов
/ 14 декабря 2011

У меня одна ошибка и одно предупреждение об использовании функции GetTiming (). Моя простуда выглядит следующим образом:

[values addObject:[NSNumber numberWithFloat:25.0]];
[timings addObject:GetTiming(kCAMediaTimingFunctionEaseIn)];
[keytimes addObject:[NSNumber numberWithFloat:0.0]];

Я импортирую следующее:

#import <QuartzCore/CAAnimation.h>
#import <QuartzCore/CAMediaTimingFunction.h>

Я предполагаю, что ошибка связана с тем, что я использую ARC, и говорит:

implicit conversion of 'int' to 'id' is disallowed with ARC.

Я попытался отключить ARC в соответствующем файле, но ошибка сохраняется.

О предупреждении говорится:

implicit declaration of function 'GetTiming' is invalid in C99

У кого-нибудь есть идеи, как мне решить эти проблемы? Большое спасибо!

1 Ответ

2 голосов
/ 14 декабря 2011

Сначала убедитесь, что функция GetTiming существует (включая правый заголовок). Теперь, если GetTiming возвращает int, проблема в том, что вы не можете добавить примитивное значение в массив. Вам нужно обернуть возвращаемое значение в NSNumber.

[timings addObject:
    [NSNumber numberWithInt:GetTiming(kCAMediaTimingFunctionEaseIn)]];

Edit:

Вам не хватает функции, которая была объявлена ​​в JackController.m.

CAMediaTimingFunction* GetTiming(NSString* name) {
    return [CAMediaTimingFunction functionWithName:name];
}

Для простоты не используйте эту функцию, просто создайте ее напрямую.

[timings addObject:
    [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
...