Arhn - архитектура программирования

Сбой приложения при реализации нескольких AVAudioPlayers в ARC

Я планирую использовать несколько AVAudioPlayers для одновременного воспроизведения разных аудиофайлов. Они запускаются событиями, инициированными пользователем. Я использую ARC впервые, и не так много документации о том, как ARC может применяться для настройки AVAudioPlayers (пример кода Apple предшествует ARC, как и большинство учебных пособий, которые я могу найти).

Приложение отлично работает с одним экземпляром AVAudioPlayer, но выдает SIGABRT при добавлении второго экземпляра. Я предполагаю, что это как-то связано с преждевременным выпуском экземпляров игрока ARC, но я не уверен, как это предотвратить.

Код выглядит следующим образом:

@interface LocationTracker : UIViewController <AVAudioPlayerDelegate> {

AVAudioPlayer *mainLoopPlayer;
AVAudioPlayer *sea1Player;

}

@property (strong, nonatomic) AVAudioPlayer *mainLoopPlayer;
@property (strong, nonatomic) AVAudioPlayer *sea1Player;

@end

реализация (в viewDidLoad):

NSURL *mainLoopURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"wind" ofType:@"aiff"]];   
self.mainLoopPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:mainLoopURL error:nil];  
mainLoopPlayer.numberOfLoops = -1;
mainLoopPlayer.delegate = self;
[mainLoopPlayer prepareToPlay];

NSURL *sea1URL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"sea1" ofType:@"aiff"]];   
self.sea1Player = [[AVAudioPlayer alloc] initWithContentsOfURL:sea1URL error:nil];  
sea1Player.numberOfLoops = -1;
sea1Player.delegate = self;
[mainLoopPlayer prepareToPlay];

Любая помощь очень ценится.


  • При просмотре отладчика похоже, что проблема связана с экземплярами NSURL. Либо они выпускаются до того, как их можно будет использовать, либо одно конфликтует с другим? 05.02.2012

Ответы:


1

Хорошо, нашел проблему, и она была связана не с управлением памятью, а с использованием указанной папки для ссылки на аудиофайлы.

Раньше я без проблем использовал ссылочные папки для хранения изображений, но, по-видимому, это недопустимо при работе с несколькими аудиофайлами.

05.02.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..