プレーヤー ファクトリのすべてのパラメーターを設定しinit
、プレビュー用にプレーヤーを準備した後、プレーヤーがプレーヤーの状態 (1) によって初期化されていることがわかります。また、バッファ コールバックはいくつかの数値を出力します。
play
しかし、メソッドを呼び出そうとすると、 [RealPLayer BufferFlushed]
.
私には null 参照の問題のように思えますが、プレーヤー ファクトリ クラスはシングルトンであり、init
.
どうなり得るか?
プレーヤーの初期化
- (id)init { if (self = [スーパー初期化]) { deezerPlayer = [PlayerFactory createPlayerWithNetworkType:NetWork_WIFI_AND_3G andBufferProgressInterval:50.f]; [deezerPlayer setPlayerDelegate:self]; [deezerPlayer setBufferDelegate:self]; } 自分自身を返します。 }
これは、必要な URL と ID を持つ別のクラスから呼び出されるプレビューの準備です
- (void) initPlayerForPreviewWithUrl:(NSString *)url andTrackId:(NSString *)trackId{ NSLog(@"INIT PLAYER WITH LINK: %@ AND ID: %@",url,trackId); [deezerPlayer preparePlayerForPreviewWithURL:url trackID:trackId andDeezerConnect:[[deezerClass deezerSession] deezerConnect]]; }
その後、同じ他のクラスから play メソッドを呼び出します
- (無効)再生 { [deezerPlayerプレイ]; }
この時点で、エラーが発生します
これは呼び出しクラスです
- (void)setTheData{ [[playerController currentPlayer] initPlayerForPreviewWithUrl:sop.currentSongLink andTrackId:sop.currentSongId]; } - (IBAction)togglePlayPause:(id)送信者 { if(playPause.selected) { [[playerController currentPlayer] 一時停止]; [playPause setSelected:NO]; } } そうしないと { [[playerController currentPlayer] プレイ]; [playPause setSelected:YES]; } }
プレーヤー コントローラーの現在のプレーヤー インスタンスは、他のクラスの deezerplayer であることに注意してください。