SAActionBlocks 是在指定的(NSTimeInterval)延迟后执行的代码块。
比如,您想在延迟一秒后执行以下方法
- (void)myGreatMethodWithValue:(id)value1 andAlternateValue:(id)value2;
您可以使用内置的 performSelector:withObject:afterDelay:
方法。然而,我们希望能够指定多个参数。使用 SAActionBlocks 可实现这一点。
[SAActionBlocks performBlockAfterDelay:1.0 block:^{
[self myGreatMethodWithValue:value1 andAlternateValue:value2];
}];
此示例在指定的延迟后,在主线程上执行方法。但是,您也可以使用以下方式在后台线程上运行方法
[SAActionBlocks performBlockOnUniqueBackgroundQueueAfterDelay:1.0 block:^{
[self myGreatMethodWithValue:value1 andAlternateValue:value2];
}];
您还可以指定一个 NSOperationQueue,将方法执行在该队列上
[SAActionBlocks performBlockOnQueue:customQueue afterDelay:1.0 block:^{
[self myGreatMethodWithValue:value1 andAlternateValue:value2];
}];
由于这些 performBlock
方法接收一个 block 参数,因此您可以在延迟后运行任何代码!
[SAActionBlocks performBlockAfterDelay:1.0 block:^{
NSString *constantValue = @"Hello World";
for (NSString *value in self.allValues) {
[self myGreatMethodWithValue:value andAlternateValue:constantValue];
}
}];
您还可以在 Grand Central Dispatch (GCD) 队列上运行代码块
[SAActionBlocks performBlockOnGCDQueue:gcdQueue afterDelay:1.0 block:^{
[self myGreatMethodWithValue:value1 andAlternateValue:value2];
}];
甚至在一个 NSThread 上
[SAActionBlocks performBlockOnThread:myThread afterDelay:1.0 block:^{
[self myGreatMethodWithValue:value1 andAlternateValue:value2];
}];
关于 SAActionBlocks 的文档可以在 Wiki 上查看。
此代码可免费使用和重新分发在您的应用程序中。
如果您喜欢的话,可以向以下地址之一发送小额捐赠
1TobyaXFetqBigGb7zRrLbMXLzUnsrrQA (BTC)
LfFBPhH5NsVTR2KqRP67RVDPPcExLZLyKQ (LTC)