앱을로드 할 때마다이 줄에 중단 점을 설정 한 것처럼 중지됩니다.
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 파일이 중단 점 이후에 문제없이로드되고 재생됩니다.
내가 뭘 잘못하고 있는지 아십니까?
편집 :
중단 점에서 멈출 때 역 추적을 실행했습니다. 이것은 출력입니다.
(lldb) bt * 스레드 # 1 : tid = 0x1c03, 0x30df1724 libc ++ abi.dylib`__cxa_throw, 중지 이유 = 중단 점 1.2 프레임 # 0 : 0x30df1724 libc ++ abi.dylib`__cxa_throw 프레임 # 1 : 0x36403a24 AudioToolbox`ID3ParserHandle :: ID3ParserHandle (void *, long (*) (void *, unsigned long, unsigned long, unsigned long, void **, unsigned long *)) + 452 프레임 # 2 : 0x36403b0e AudioToolbox`ID3ParserOpen + 142 프레임 # 3 : 0x3635bd16 AudioToolbox`MPEGAudioFile :: ParseID3Tags () + 58 프레임 # 4 : 0x3635b9aa AudioToolbox`MPEGAudioFile :: ParseAudioFile () + 26 프레임 # 5 : 0x3631723e AudioToolbox`AudioFileObject :: DoOpenWithCallbacks (void *, long (*) (void *, long long, unsigned long, void *, unsigned long *), long (*) (void *, long long, unsigned long , void const *, unsigned long *), long long (*) (void *), long (*) (void *, long long)) + 166 프레임 # 6 : 0x36316480 AudioToolbox`AudioFileOpenWithCallbacks + 612 프레임 # 7 : 0x31f4c1ec AVFoundation`- [AVAudioPlayer initWithData : error :] + 120
“해결책”: 모든 예외에 대해 예외 중단 점을 비활성화하고 Objective-C 예외에만 중단 점을 사용하면 문제가 사라집니다. 그러나 AVAudioPlayer 할당시 C ++ 예외가 발생하는 문제는 해결되지 않습니다.
답변
예외 중단 점을 추가하고 예외 유형을 “모두”에서 “Objective-C 예외”로 편집하십시오.
AudioToolbox의 일부 클래스는 일반 C ++ 예외를 발생시킵니다. 이런 식으로 필터링 할 수 있습니다.
답변
AVAudioPlayer와 AVAudioRecorder는 둘 다 예외를 발생시킵니다. 이들은 플레이어에 의해 내부적으로 처리되지만 “All Breakpoints”(예 : 예외 : All, Break : On Throw)에 대한 중단 점이있는 경우 이러한 예외를 포착합니다. 계속 실행하면 앱이 계속 정상적으로 실행되고 전혀 충돌하지 않습니다.
내가 지금까지 생각 해낸 유일한 해결책은 Breakpoint Navigator에서 중단 점 막대를 클릭하고이 특정 중단 점을 비활성화 한 다음 비활성화 된 상태로 실행하는 것입니다.
예외가 발생하여 앱이 충돌하는 경우 나는 cmd-6을 사용하고 중단 점을 활성화 한 다음 다시 실행하고 충돌했을 때했던 작업을 수행합니다.
편집 : “Objective-C 예외”로 설정하는 것은 분명히 방법입니다. 위의 답변을 참조하십시오!
답변
다음은이 오류를 수정 한 방법을 보여주는 스크린 샷입니다. 이것이 위의 답변이 말하는 것과 같은 방식인지 확실하지 않지만 비슷하다고 가정합니다.
- Xcode의 중단 점 탐색기로 이동합니다.
- ‘모든 예외’줄을 Control- 클릭합니다.
- ‘중단 점 편집 …’옵션을 선택합니다.
- 변경
Exception
에서All
에Objective-C
.
답변
역 추적은 많은 도움이되었습니다. 감사합니다!. 최근에 같은 문제가 발생하기 시작했습니다. 던지고 있던 mp3 파일에 유효한 ID3 태그가 없으며 Tagr 와 같은 앱을 통해 실행 하여 바로 수정했습니다!
