iPhone - запустить два процесса одновременно - PullRequest
0 голосов
/ 18 ноября 2009

Мне нужно запустить более одного процесса одновременно - воспроизведение AVAudioPlayer, таймер и операцию записи в файл.

Если я просто напишу их в методе, они выполняются одна за другой, и начало всех операций имеет небольшую задержку.

Есть идеи? Цени любую помощь.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 ноября 2009

Почему вы не используете темы?

Вы можете сделать это легко с помощью:

- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

или с помощью NSOperation с NSOperationQueue.

Посмотрите этот вопрос для более подробной информации.

Примечания:

  • вам понадобится пул автоматического выпуска в вашем потоке, если вы используете какие-либо автоматически выпущенные классы
  • если вы хотите использовать таймер в другом потоке, вам также понадобится еще один цикл выполнения.
  • Остерегайтесь безопасности ниток. Например, я не знаю, можно ли использовать AVAudioPlayer в потоке, отличном от основного потока.
  • Я не думаю, что вы можете запланировать NSTimer из NSOperation
1 голос
/ 19 ноября 2009

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

Вам нужно избегать создания слишком большого количества дополнительных потоков, поскольку iPhone представляет собой устройство с одним процессором, а использование нескольких потоков приведет к большему потреблению ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...