有效释放的闭包引用的指针会发生什么情况?

时间:2020-06-11 02:44:05

标签: swift

以下是伪代码来帮助说明我的问题:

var dataSourceArray = [CustomClassObject]()

databaseListener { (data) in
    dataSourceArray.removeAll()

    let id = data.id
    let imageURL = data.imageURL
    let listing = CustomClassObject(id: id, image: nil)

    remoteFileStorage.getImage(url: imageURL) { (image) in
        listing.image = image
    }

    dataSourceArray.append(listing)
    tableView.reloadData()
}

databaseListener是一个实时数据库侦听器,可以快速返回更新。在其完成处理程序中,有一个异步调用下载图像。如果databaseListenerremoteFileStorage有机会从上次运行返回之前返回了新数据,listing闭包中的remoteFileStorage指针会发生什么? listing指针不再位于dataSourceArray中(它已被清除),因此remoteFileStorage处理程序仍然可以安全地访问它吗?我的假设是listing指针仍然指向内存中的有效地址,因为remoteFileStorage闭包已经引用了它,但是我不确定吗?

0 个答案:

没有答案