我很难理解这一点:
__block __weak MyCell *weakSelf = self;
[NetworkManager profileImageForUser:id success ^(UIImage *image, NSString *userId){
weakSelf.leftImageView.image = image;
}];
问题是,当 MyCell 被释放并启动成功 block 时,它会崩溃,并显示无法识别的选择器已发送到实例。我该如何处理这个问题?
最佳答案
发生此崩溃的原因是,weakSelf 没有被 block 保留,这可能是在对象释放后异步执行的。
为什么在这里使用__block?这就是您的问题的原因。
仅当您要从 block 内部修改相关对象时才需要 __block。 __block 还可以防止 block 保留对象的行为。由于您没有更改weakSelf的VALUE(仅更改其属性),因此不应使用__block,以便该 block 将保留该对象,从而在需要时将其保留在内存中,从而防止崩溃。
关于iphone - 当成功 block 启动时,__block 弱崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11769504/