【发布时间】:2012-06-12 01:44:11
【问题描述】:
我正在查看此线程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 中的完成块将保留参数以便安全释放块吗?
【问题讨论】:
标签: objective-c memory-management objective-c-blocks grand-central-dispatch