Ниже приведена моя категория 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