Вопрос

У меня есть простое приложение, которое ведет обратный отсчет до полуночи, а затем снова и снова воспроизводит звуковой сигнал и мигает метка, показывающая время.Таким образом, мигающая метка использует NSTimer , в то время как звуковой сигнал передается в ее собственном потоке, так что функция чистого C (для обратного вызова завершения системного звукового идентификатора) может использовать [NSThread sleepForTimeInterval:...];немного подождать между воспроизведением звукового сигнала будильника.Итак, я получаю два сообщения об ошибках во время выполнения, в которых говорится, что пула авторелизов нет, и он просто утечет.Это потому, что в методе, который я вызываю в новом потоке, есть две @"Строки", которые используются для создания системного звукового идентификатора (имя файла и расширение).Есть ли способ, которым я не могу использовать пул автоматического выпуска, поскольку это единственные две вещи, которые когда-либо пытались его использовать.Спасибо.

Или я должен использовать два NSTimers вместо другого потока ..?

Ответ Бена Готлиба был правильным, однако я решил использовать вместо этого другой NSTimer, потому что я забыл о том, что он на самом деле не синхронизирован со временем, когда вы переводите поток в спящий режим, в качестве фактического выполнения кода, прежде чем это займет немного времени.И это делает вещи симметричными ;).

Это было полезно?

Решение

Просто создайте пул автоматического выпуска в вашем потоковом методе:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

... тело резьбы...

[pool release];

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top