我经常想在未来几微秒内执行一些代码。现在,我这样解决:
- (void)someMethod
{
// some code
}
和这个:
[self performSelector:@selector(someMethod) withObject:nil afterDelay:0.1];
它有效,但我每次都必须创建一个新方法。是否可以使用块来代替这个?基本上我正在寻找类似的方法:
[self performBlock:^{
// some code
} afterDelay:0.1];
这对我来说真的很有用。
没有内置的方法可以做到这一点,但通过类别添加也不错:
@implementation NSObject (PerformBlockAfterDelay)
- (void)performBlock:(void (^)(void))block
afterDelay:(NSTimeInterval)delay
{
block = [[block copy] autorelease];
[self performSelector:@selector(fireBlockAfterDelay:)
withObject:block
afterDelay:delay];
}
- (void)fireBlockAfterDelay:(void (^)(void))block {
block();
}
@end
归功于Mike Ash http://www.mikeash.com/pyblog/friday-qa-2009-08-14-practical-blocks.html为基本实施。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)