创建计时器时,只有以下选项:
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats;
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds invocation:(NSInvocation *)invocation repeats:(BOOL)repeats;
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats;
正如您所看到的,没有工厂方法可以创建一个带有块作为其执行操作的计时器。
这是为什么?或者我错过了什么?
答案 0 :(得分:4)
NSTimer在块之前,尚未更新以使用它们。如果你想使用一个块(这是正确的),使用GCD调度源,即dispatch_source_set_timer
和相关函数。
在ARC下,请注意保留周期(尽管你也不得不提防那些使用NSTimer的人)。
答案 1 :(得分:3)
如果您真的想要,可以通过创建类别传递选择器的块。见this question。您也可以使用此github project执行此操作。