Я решил эту проблему. Заменил цикл while на Timer и сделал несколько изменений.
Создан таймер, который срабатывает каждую секунду
timer = [NSTimer timerWithTimeInterval:1
target:self
selector:@selector(performAction)
userInfo:nil
repeats:YES];
, затем в executeAction проверьте текущее время воспроизведения и обнулите таймер, если разница во времени составляет <= 1 сек </p>
int totalTime = [[[self nowPlayingItem] valueForProperty:MPMediaItemPropertyPlaybackDuration] intValue];
if((totalTime - self.currentPlaybackTime) <= 1.0)
{
if(timer)
[timer invalidate];
/* Performed my desired action here.... */
}