NSTimer с блоком - правильно ли я делаю?

Ниже приведена моя категория Objective-C в NSTimer для выполнения блочной стрельбы. NSTimers. Я не вижу в этом ничего плохого, но я получаю то, что блок, который я передаю в метод schedule ... , освобождается, несмотря на то, что я вызвал для него copy .

Что мне не хватает?

typedef void(^NSTimerFiredBlock)(NSTimer *timer);

@implementation NSTimer (MyExtension)

+ (void)timerFired:(NSTimer *)timer 
{
    NSTimerFiredBlock blk = timer.userInfo;
    if (blk != nil) {
        blk(timer);
    }
}

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds 
                                    repeats:(BOOL)repeats 
                                   callback:(NSTimerFiredBlock)blk 
{
    return [NSTimer scheduledTimerWithTimeInterval:seconds
                                            target:self
                                          selector:@selector(timerFired:)
                                          userInfo:[blk copy]
                                           repeats:repeats];
}

@end
12
задан Brad Larson 29 February 2012 в 15:08
поделиться