iPhone dev - executeSelector: withObject: afterDelay или NSTimer?

Чтобы повторить вызов метода (или отправить сообщение, я думаю, соответствующий термин) каждый х секунд, лучше ли использовать NSTimer (NSTimer 's scheduleTimerWithTimeInterval: target: selector: userInfo: repeats :) или чтобы метод рекурсивно вызывал себя в конце (используя executeSelector: withObject: afterDelay)? Последний нене использовать объект, но, возможно, он менее понятен / читабелен? Кроме того, просто чтобы дать вам представление о том, что яЭто просто вид с меткой, которая ведет отсчет до 12:00 в полночь, а когда он достигает 0, он будет мигать временем (00:00:00) и будет непрерывно воспроизводить звуковой сигнал.

Благодарю.

Изменить: также, что было бы лучшим способом повторно играть SystemSoundID (навсегда)? Изменить: я в конечном итоге использовал это, чтобы играть SystemSoundID навсегда:

// Utilities.h
#import 
#import 


static void soundCompleted(SystemSoundID soundID, void *myself);

@interface Utilities : NSObject {

}

+ (SystemSoundID)createSystemSoundIDFromFile:(NSString *)fileName ofType:(NSString *)type;
+ (void)playAndRepeatSystemSoundID:(SystemSoundID)soundID;
+ (void)stopPlayingAndDisposeSystemSoundID;

@end


// Utilities.m
#import "Utilities.h"


static BOOL play;

static void soundCompleted(SystemSoundID soundID, void *interval) {
    if(play) {
        [NSThread sleepForTimeInterval:(NSTimeInterval)interval];
        AudioServicesPlaySystemSound(soundID);
    } else {
        AudioServicesRemoveSystemSoundCompletion(soundID);
        AudioServicesDisposeSystemSoundID(soundID);
    }

}

@implementation Utilities

+ (SystemSoundID)createSystemSoundIDFromFile:(NSString *)fileName ofType:(NSString *)type {
    NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:type];
    SystemSoundID soundID;

    NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];

    AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);
    return soundID;
}

+ (void)playAndRepeatSystemSoundID:(SystemSoundID)soundID interval:(NSTimeInterval)interval {
    play = YES
    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL,
                                          soundCompleted, (void *)interval);
    AudioServicesPlaySystemSound(soundID);
}

+ (void)stopPlayingAndDisposeSystemSoundID {
    play = NO
}

@end

Кажется, работает нормально .. И для ярлыка мигает яЯ буду использовать NSTimer, я думаю.