2013-12-15 2 views
2

플레이어 팩터에 대한 모든 매개 변수를 설정 한 후 플레이어를 미리 준비 했으므로 플레이어 상태 (1)로 초기화됩니다. 또한 버퍼 콜백은 일부 숫자를 출력합니다.[playerFactory play] 메서드 호출 중 액세스 오류가 잘못되었습니다.

그러나 play 메서드를 호출하려고하면 [RealPLayer BufferFlushed]에 대한 잘못된 액세스 오류가 발생합니다.

내게 그것은 null 참조 문제처럼 보이지만 플레이어 팩토리 클래스는 싱글 톤이며 나는 init에 선언했습니다.

무엇이 될 수 있습니까?

플레이어 초기화

 

    - (id)init { 
     if (self = [super init]) { 
      deezerPlayer = [PlayerFactory createPlayerWithNetworkType:NetWork_WIFI_AND_3G 
               andBufferProgressInterval:50.f]; 
      [deezerPlayer setPlayerDelegate:self]; 
      [deezerPlayer setBufferDelegate:self]; 
     } 
     return self; 
    } 

이있는

 

    - (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]]; 

    } 

는 그 후 나는이 같은 다른 클래스에서 재생 메서드를 호출하여 필요한 URL과 ID를 가진 다른 클래스에서 호출 미리 준비

 

    - (void)play { 

     [deezerPlayer play]; 

    } 

이 시점에서 오류 메시지가 표시됩니다.

이 호출하는 클래스를 플레이어 컨트롤러의 현재 플레이어 istances가 다른 클래스의 deezerplayer이라고

 

    - (void)setTheData{ 
      [[playerController currentPlayer] initPlayerForPreviewWithUrl:sop.currentSongLink andTrackId:sop.currentSongId]; 


    } 



    - (IBAction)togglePlayPause:(id)sender 
    { 
     if(playPause.selected) { 
       [[playerController currentPlayer] pause]; 
       [playPause setSelected:NO]; 
      } 
     } else { 
       [[playerController currentPlayer] play]; 
       [playPause setSelected:YES]; 


     } 

    } 

주입니다

+0

관련 코드를 게시하십시오. 우리가 추측하는 것은 불가능합니다. –

+1

내 잘못! api 요청에서 잘못된 링크를 검색합니다. 그래서 플레이어 요청이 알 수없는 형식에 대해 잘못된 액세스 오류를 제공하고있었습니다. – UncleSax

답변

0

당신은 잘못된 노래 "ID"제공하는 경우 -에 대한 "streamId"일치 플레이어는 EXC_BAD_ACCESS를 얻습니다. 또한 API의 JSON 응답에 "readable = 0"으로 표시된 노래를 재생하려고하면 동일한 오류가 발생할 수 있습니다. Deezer가이 충돌을 수정하고 적절한 오류 메시지를 표시하기를 바랍니다.