1

C4 でさまざまなメディア タイプの停止と開始を処理する汎用関数を作成しています。以下のメソッドを呼び出してみましたが、この方法で呼び出すとAVPlayerのplayメソッド内のplayメソッドと競合するようです。この問題を解決する方法はありますか?

-(void) StartStop: (NSNotification *) notification
{
    if( [[notification object] isKindOfClass:[C4Movie class]] )
    {
        if( [[notification object] isPlaying])
            [[notification object] pause];
        else
            [[notification object] play];
    }
}
4

1 に答える 1

1

解決策は、コンパイラが呼び出すオブジェクトを認識できるように、通知オブジェクトを特定のクラスにキャストすることです。Objective-C は動的バインディングを使用します。詳細な説明については、この質問を参照してください: Late Binding vs Dynamic Binding

-(void) StartStop: (NSNotification *) notification
{
    if( [[notification object] isKindOfClass:[C4Movie class]] )
    {
        C4Movie * temp = [notification object];
        if( [temp isPlaying])
            [temp pause];
        else
            [temp play];
    }
}
于 2013-06-07T00:55:19.150 に答える