앱을로드 할 때마다이 줄에 중단 점을 설정 한 것처럼 중지됩니다.
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 ++ 예외가 발생하는 문제는 해결되지 않습니다.