ProductCenterController __weak *tempSelf = self;
void(^block)(void) = ^{
tempSelf.actIndView = ....
[tempSelf.view addSubview:tempSelf.actIndView];
};
[NSThread detachNewThreadSelector:@selector(actionForThreadBlock:) toTarget:self withObject:block];
我发现泄漏 - '_Block_copy_internal'......(我使用ARC) 然后当我将最后一行代码更改为这样的时候,漏洞就丢失了......:
[NSThread detachNewThreadSelector:@selector(actionForThreadBlock:) toTarget:self withObject:[block copy]];
如果我不使用[块复制],为什么会导致泄漏????
我认为,该块将在该函数之后释放,并且线程将在完成后释放所有...
它会如何导致泄漏?
答案 0 :(得分:1)
在堆栈上创建块,因此在方法(范围)结束时释放它们。一段时间后,你的线程将尝试执行已经解除分配的块,以异常结束。
Copy
将块从堆栈移动到堆内存,因此即使在原始方法结束后它也会存在。
在广泛讨论主题时,请参阅Apple文档。