【发布时间】:2013-09-26 20:55:12
【问题描述】:
我有一个 NSObject 类别可以在一段时间后执行块。在这种情况下我需要弱化自我吗?
__weak ViewController *weakSelf = self;
[self runBlockAfterDelay:0.6 block:^{
weakSelf.someview = ...
}];
// Category
- (void)runBlockAfterDelay:(NSTimeInterval)delay block:(void (^)(void))block {
dispatch_async(dispatch_get_main_queue(), ^{
[self performSelector:@selector(executeBlockAfterDelay:) withObject:[block copy] afterDelay:delay];
});
}
- (void)executeBlockAfterDelay:(void(^)(void))block
{
if (block)
block();
}
【问题讨论】:
-
为什么不使用 dispatch_after 来代替?
-
之前用的是dispatch_after,但是在IOS7下,短时间间隔的精度很差……我发现在0.3秒后做一个dispatch_after,实际执行时间可能相差30%..
标签: iphone ios objective-c