我有一个需要一个块的方法:
- (void)methodWithBlock:(blockType)block
该方法从复制开始block
,因为它在使用它之前会执行异步操作,否则它将被丢弃。然后它在另一个块中调用该方法,然后在该块中释放它。总结:
- (void)methodWithBlock:(blockType)block
{
block = [block copy];
[something asyncStuffWithFinishedBlock:^{
// ..
block();
[block release];
}];
}
CLANG 抱怨“块”的内存泄漏。如果我删除了复制和释放语句,该块将在它被调用时消失——至少早期的崩溃表明情况就是这样。
这是错误的做事方式吗?如果是这样,我应该如何执行上述操作 - 即方法中的块语句中的块回调?我不能将块存储为实例变量,因为在异步部分发生时,可以使用不同的参数重复调用该方法。