0

2日間さらに調査して解決できなかったので、問題があります。

ストリーミング オーディオを実行するクラスにアプリがあります。別のビューには、URL を介して開かれるポッドキャストを含むテーブルがあります。

最初のクラスのコードを利用するためにデリゲートを作成したので、ユーザーがオーディオ ポッドキャストを再生するときは、パラメーター (この場合は URL) を変更するだけでメイン クラスのメソッドを占有します。

デリゲートは正しく機能し、パラメーターも渡します。唯一の問題は、デリゲートがメイン クラスをインスタンス化する必要があることです。

ClassePrincipal *classePrincipal  = [[ClassePrincipal alloc] init];
classePrincipal.delegate = self;

[classePrincipal method];

オーディオがメイン クラスで既に実行されており、新しいオブジェクト クラスとしてインスタンス化されている場合、既に実行されているものの上にオーディオ Podcast の再生が開始されます。

そして、彼がポッドキャストを再生し続ける前に、私が大きなストップを持っていたとしても、例えば:

- (void) playPodcast {
                  [classePrincipal destroyStreamer];
                  [classePrincipal startStream];

}

destroyStreamer メソッドは正しく呼び出されますが、インスタンスが最初から classePrincipal から作成されたため、オーディオが再生されていません。

質問を転がしましたが、クラスをインスタンス化せずに ClassePrincipal を渡すパラメーターのメソッドを呼び出す方法はありますか? メモリに新しいオブジェクトを割り当てていないため、オーディオが再生されているかどうかを確認できました。

他に解決方法があればよろしくお願いします。

4

1 に答える 1

0

私が言えることから、このクラスをシングルトンに変えたいと思うかもしれません。このようにして、まだインスタンス化されていない場合はインスタンス化され、既にインスタンス化されている場合は、コードにいくつかのチェックを配置して、新しいオーディオを開始する前に現在のオーディオを停止できます。私が見つけたランダムなチュートリアルは、ここにリンクの説明を入力してください

于 2012-05-29T21:58:02.347 に答える