Cappuccinoさん、ちょっとtypoが多すぎませんか?

Macを持っていないので、Cocoaの勉強を兼ねて、CocoaのWeb版?であるCappuccinoを少し触ってみた*1Cappuccinoで実現されているObjective-Jなる言語は、Objective-Cの文法のトレースに成功しているので、本物のCocoaを触っている感覚になる。
一見すると、いろんなCocoaのクラスのソースが存在しており、ソースを見ると実装もされているので、サポートしているように見えるが、移植しているだけで動かないものも多い。
サポートしていないだけならいいのだが、Cappuccino側の実装のtypoで動かないものもある。
typoバグについて、見つけた分だけあげておく。

CABasicAnimationのanimationWithKeyPath:が動かない

CABasicAnimationのanimationWithKeyPath:で使っている「setKeyPath:」の綴りが「setKeypath:」になっている。
違い分かる?PathのPが小文字になっている・・・
ということでパッチ。

@implementation CABasicAnimation (test)

+ (id)animationWithKeyPath:(CPString)aKeyPath
{
var animation = [self animation];
[animation setKeyPath:aKeyPath];
return animation;
}
@end

CALayerのアニメーション機能はまだ実装されていないようなので、CABasicAnimationにパッチを当てても動かない。

CPAnimationのstartAnimationが動かない

CPAnimationのstartAnimationの中でanimationShouldStart:が実装されているかのチェックがrespondsToSelector:を使って行われるのだが、「animationShouldStart:」ではなく、「animationShouldStart」のチェックが行われている・・・
違い分かる?コロンがない・・・
setDelegate:で登録するCPViewに「animationShouldStart:」ではなく、「animationShouldStart」を実装してあげる。

@implementation MyView : CPView
{
}
// これだと動かない
-(BOOL)animationShouldStart:(CPAnimation)animation
{
return YES;
}

// これだと動く
-(BOOL)animationShouldStart
{
return YES;
}
@end

上記のように実装してあげると、アニメーションができた。

最後に

微妙に動かないくせに、ソースだけあるものが多い。そのわりには少し手を加えてあげると動き出す。
サポートする、しない関係なしに、気合でCocoaのソースをObjective-Jに移植しているのかなと思ってしまう。
とは言え、Objective-Cのトレースっぷりはすごいものがあるので、もう少し使ってみることにする。

*1:触っているバージョンは、0.7βではなく、0.6