在Swift中找不到PRTweenOperation timingFunction成员

时间:2014-07-02 21:59:26

标签: objective-c swift

我正在尝试在Swift iPhone应用程序中使用PRTween库。

GitHub的原始示例代码:

PRTweenPeriod *period = [PRTweenPeriod periodWithStartValue:100 endValue:200 duration:3];
PRTweenOperation *operation = [[PRTweenOperation new] autorelease];
operation.period = period;
operation.target = self;
operation.timingFunction = &PRTweenTimingFunctionLinear;

我的Swift端口:

var period = PRTweenPeriod.periodWithStartValue(100, endValue: 200, duration: 3) as PRTweenPeriod
var operation = PRTweenOperation()
operation.period = period
operation.target = self
operation.timingFunction = PRTweenTimingFunctionLinear

Xcode给了我这个错误:

'PRTweenOperation' does not have a member named 'timingFunction'

我不知道如何解决这个问题。我可以在PRTween.h中清楚地看到成员定义。我认为这可能与PRTweenTimingFunction的定义带给我的事实有关。

typedef CGFloat(*PRTweenTimingFunction)(CGFloat, CGFloat, CGFloat, CGFloat);

还有其他人看到过这样的错误吗?有任何修复建议吗?

P.S。我不太确定该怎么称呼typedef。它是一个函数指针吗?

修改

作为一种解决方法,我使用了不需要计时功能的代码:

let period = PRTweenPeriod.periodWithStartValue(100, endValue: 200, duration: 2) as PRTweenPeriod

PRTween.sharedInstance().addTweenPeriod(period, 
    updateBlock: { (p: PRTweenPeriod!) in
        NSLog("\(Int(p.tweenedValue))"
    }, 
    completionBlock: { NSLog("Completed tween") })

1 个答案:

答案 0 :(得分:1)

是的,这是一个函数指针。这是C interoperability的当前限制:

  

请注意,C函数指针不会在Swift中导入。

如果您愿意,可以考虑filing a bug。 (请注意,基于块的API很好,可以使用Swift闭包。)