我正在查看此线程中的一些代码How do you trigger a block after a delay, like -performSelector:withObject:afterDelay:? . 我想知道,如果该块异步执行某些操作,该块应该何时释放?
假设我有如下代码:
- (void)testMethod:(id)parameter
{
dispatch_block_t block = ^{
SomeAsyncTask *t = [SomeAsyncTask withCompletionBlock:^{
[parameter doAction];
}];
};
[self performSelector:@selector(executeBlock:)
onThread:backgroundThread
withObject:block
waitUntilDone:NO];
dispatch_release(block); //I can release the block here because performSelector retains the block
}
- (void)executeBlock:(id)block
{
block();
}
那么关键是 SomeASyncTask 中的完成块将保留参数以便释放块是安全的吗?