Кожен раз, коли я завантажую програму, вона зупиняється так, ніби я встановив точку перерви на цій лінії:
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-файл завантажується та відтворюється без проблем після точки перерви.
Чи маєте ви поняття, що я роблю неправильно?
EDIT: Я запустив зворотній слід, коли він зупиняється на точці розриву. Це був вихід:
(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 frame # 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: помилка:] + 120
"РІШЕННЯ": Виявляється, якщо я відключую точку перерви виключення для всіх винятків і використовую лише точку розриву для виключень Objective-C, проблема зникає. Але це не вирішує проблему, що при розподілі AVAudioPlayer є виняток C ++.