Я использую Objective-C, Xcode 4.5.1 и работаю над приложением для iPhone.
У меня есть метод A, в котором я хочу вызвать другой метод B для выполнения серии вычислений каждые x секунд. В методе A я начинаю воспроизведение аудиофайла. Метод B будет отслеживать звук каждые x секунд в течение продолжительности звукового файла.
Я нашел NSTimer
как потенциальное решение, но мне трудно заставить его работать/понимать его.
Я просто хочу вызвать метод B каждые х секунд и выполнить его вычисления, но NSTimer
требует, чтобы я предоставил несколько вещей, о которых я не уверен, что я должен сказать.
[NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)
target:(id) select:(SEL) userInfo:(id) repeats:(BOOL)];
Я понимаю, что в NSTimeInterval
я предоставляю интервал, в который я хочу NSTimer
работать. Но, как я могу сказать, что он запускает метод B?
Я посмотрел пример кода, и в настоящее время создается впечатление, что я предоставляю метод в select:
. Но что я пишу на "target:
"? Зачем мне нужна цель? Я попытался ввести 'self
', но Xcode сообщает мне:
Использование незаявленного идентификатора 'self'
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self
select:@selector(targetMethod:myVolumeMonitor()) userInfo:nil repeats:YES];
Итак, я полагаю, что 'self
' должен быть указателем на объект, но где я хочу указать?
Ниже приводится упрощение моего кода:
MethodA()
{
//Start playing an audio file.
//NSTimer calling Method B, as long the audio file is playing, every x seconds.
}
MethodB()
{
//Do calculations.
}
Я был бы признателен, если бы кто-нибудь мог дать мне несколько ответов/указать мне в правильном направлении! (