AVAudioPlayer가 디버그 모드에서 중단점을 던집니다.
앱을 로드할 때마다 다음 줄에 중단점을 설정한 것처럼 중지됩니다.
self.audioPlayer =
[[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName]
error:&outError] autorelease];
이 선 위나 근처에는 중단점이 없습니다.디버깅 모드에서 앱을 실행할 때만 발생하고 중단 후에는 아무 것도 충돌하지 않습니다."프로그램 실행 계속"을 클릭하면 앱이 아무 일도 일어나지 않습니다.
이 메서드는 loadData 메서드이며 다음과 같이 호출됩니다.initWithData:
-(NSData*)loadData:(NSString*)fileName
{
NSString *dataPath = [self.path stringByAppendingPathComponent:fileName];
dataPath = [dataPath stringByStandardizingPath];
NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ];
return data;
}
loadData 기능이 정상적으로 작동하는 것 같습니다.요청한 mp3 파일은 중단점 이후 문제없이 로딩되어 재생됩니다.
제가 뭘 잘못하고 있는지 아세요?
편집: 중단점에서 멈추면 역추적을 실행했습니다.다음은 출력입니다.
bt스레드 #1: tid = 0x1c03, 0x30df1724 libc++abi.dyllib'__cxa_bullet, 중지 이유 = 중단점 1.2프레임 #0: 0x30df1724 libc++abi.dyllib'__cxa_beta프레임 #1: 0x36403a24 오디오 도구 상자'ID3ParserHandle::ID3ParserHandle(void*, long(*)(void*, 부호 없음 긴, 부호 없음 긴, 부호 없음 긴, void**, 부호 없음 긴*) + 452프레임 #2: 0x36403b0e 오디오 도구 상자'ID3ParserOpen + 142프레임 #3: 0x3635bd16 오디오 도구 상자'MPEGA 오디오 파일::ParseID3Tags() +프레임 #4: 0x3635b9aa 오디오 도구 상자'MPEGA 오디오 파일::ParseAudioFile() + 26프레임 #5: 0x3631723e 오디오 도구 상자'오디오 파일 개체::DoOpenWithCallbacks(void*, long(void*, long), long(long), long(long), long(long), long(long), long(long), long(long), long(long), long(long), long(long), long(long), long(long(long), long(long(long), long(long), long), long), long(long(long), long(프레임 #6: 0x36316480 오디오 도구 상자'콜백으로 오디오 파일 열기 + 612프레임 #7: 0x31f4c1ec AVFoundation'-[AVAudioPlayer initData:error:] + 120
"솔루션":모든 예외에 대해 예외 중단점을 비활성화하고 목표-C 예외에 대해서만 중단점을 사용하면 문제가 사라집니다.하지만 AVAudioPlayer를 할당하면 C++ 예외가 발생하는 문제는 해결되지 않습니다.
예외 중단점을 추가하고 예외 유형을 "All"에서 "Objective-C exceptions"로 편집합니다.
AudioToolbox의 일부 클래스는 일반적인 C++ 예외를 슬로우합니다.이 방법으로 필터링할 수 있습니다.
AVAudioPlayer와 AVAudioRecorder는 모두 예외를 던집니다. 그 중 몇 가지는 예외입니다.플레이어가 내부적으로 처리하지만 "모든 중단점"(예: 예외:All, Break: On Throw)은 이러한 예외를 포착할 수 있습니다.이에 대해 실행을 계속하면 앱이 계속 정상적으로 실행되고 충돌하지 않습니다.
내가 지금까지 생각해 낸 유일한 해결책은 브레이크포인트 네비게이터에서 중단점 표시줄을 클릭하여 이 특정 중단점을 비활성화하고 비활성화된 상태로 실행하는 것입니다.
예외가 발생하여 앱이 충돌할 경우 cmd-6을 실행하고 중단점을 활성화한 다음 충돌 시 수행한 작업을 다시 실행합니다.
편집: "목표-C 예외"로 설정하는 것이 분명히 방법입니다.위의 답변을 참조하십시오!
다음은 이 오류를 해결한 방법을 보여주는 스크린샷입니다.이것이 위의 답변들이 말하는 것과 같은 방식인지는 잘 모르겠지만, 저는 비슷하다고 생각합니다.
- Xcode의 Breakpoint 탐색기로 이동합니다.
- '모든 예외' 라인을 클릭합니다.
- 중단점 편집...을 선택합니다.선택권
- 변할내용을 합니다.
ExceptionAllObjective-C.
뒷조사가 많은 도움이 됐어요, 고마워요!우리는 최근에 같은 문제에 부딪히기 시작했습니다.그것이 던져진 mp3 파일에는 유효한 ID3 태그가 없었고 Tagr과 같은 앱을 통해 그것들을 바로 수정한 것으로 밝혀졌습니다.
Xcode 9.2에서는 특정 예외를 확인한 후 비활성화할 수 있습니다.중단점 메뉴를 열고 사용하지 않으려면 클릭(페이드 화살표)
AVAudioPlayer를 클래스 변수로 설정해 보십시오!
언급URL : https://stackoverflow.com/questions/9683547/avaudioplayer-throws-breakpoint-in-debug-mode
'codememo' 카테고리의 다른 글
| VueJS + VUEX - 데이터 전송 관련 문제 (0) | 2023.06.12 |
|---|---|
| Angular2 경로 변경 주의사항 (0) | 2023.06.12 |
| 고객이 WooCommerce를 사용하여 구매할 때 MailChimp 그룹에 고객 청구 정보를 추가하려면 어떻게 해야 합니까? (0) | 2023.06.12 |
| 동등한 Postgre는 무엇입니까?Oracle의 CONNECT BY ... 시작 위치에 대한 SQL 구문? (0) | 2023.06.12 |
| 루비로 무한을 표현하는 방법은? (0) | 2023.06.12 |

