![](/img/trans.png)
[英]Use closure instead selector argument for UIBarButtonItem BUT without using weak self
[英]Is this the correct place to use weak self in closure?
我有一个带有 collectionView 插座的 viewController。 在 cellForRowAt 方法中,我调用此代码:
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoCell", for: indexPath) as? MediaPhotoCell else {fatalError("Could not initialize cell")}
cell.configureForMedia(obj, completion: { [weak self](image:UIImage?) in
if let loadedImage = image {
let photo = self?.loadedPhotos[indexPath.row]
photo?.image = loadedImage
self?.loadedPhotos[indexPath.row] = photo
self?.photosViewController?.updateImage(for: photo)
}
})
return cell
我一直在花时间学习如何通过保留周期解决/防止内存泄漏。 在捕获闭包中的值之前,我添加了一个捕获列表 [weak self](图像:UIIimage?)。 我的逻辑是,由于 viewController 拥有集合视图,而该集合视图拥有单元格,该单元格在其自定义实现(自定义单元格)中有一个闭包方法,并且闭包引用了 self,如果我不将 self 声明为,我将创建一个保留周期虚弱的。
这是必要的吗? 或者如果出口(collectionView)被声明为弱,这不是必要的吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.