iphone - 当成功 block 启动时,__block 弱崩溃

标签 iphone objective-c ios ipad

我很难理解这一点:

__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/

相关文章:

ios - 发送到释放实例的 NSFastEnumeration 消息

ios - objective c 在 textField 操作后将光标移回

ios - Xcode 构建完成。无法构建 iOS 应用 - Flutter 项目

iphone - MKMapView 设置区域

iphone - 在 UITableView 中插入新单元格时表格未向上移动

ios - UIViewController 没有带有 UIModalPresentationFormSheet 的parentViewController?

ios - 使用 iOS 7.1 从 UICollectionViewController 进行推送转换时 UINavigationBar 后面的深色背景

ios - 如何在 OSX 3.2.1 上的 xCode 服务上添加远程存储库?

iphone - 使用 LINQ 的设备上的 Monotouch JIT 错误

ios - 从自定义表格单元格中发送参数到 segue?