Tôi đang cố gắng giải quyết chu trình tham chiếu mạnh mẽ đóng cửa trong Swift.
Trong mã bên dưới, đối tượng được giữ lại bởi bộ điều khiển chế độ xem sở hữu. ProgressHUD
là UIView
cũng được giữ lại bởi bộ điều khiển chế độ xem sở hữu. ProgressHUD
bị rò rỉ mỗi lần xử lý hoàn thành được gọi. Khi sử dụng tính năng chụp đóng cửa mới, việc khai báo tự yếu hoặc không được công nhận không giải quyết được sự rò rỉ bộ nhớ.Đóng cửa nhanh - Chụp ảnh tự yếu
object.setCompletionHandler { [weak self] (error) -> Void in
if(!error){
self?.tableView.reloadData()
}
self?.progressHUD?.hide(false)
}
Tuy nhiên, nếu tôi tuyên bố một var yếu để tự bên ngoài của việc đóng cửa, nó sửa chữa rò rỉ bộ nhớ, như thế này:
weak var weakSelf = self
object.setCompletionHandler { (error) -> Void in
if(!error){
weakSelf?.tableView.reloadData()
}
weakSelf?.progressHUD?.hide(false)
}
Bất kỳ ý tưởng là tại sao điều này không làm việc với chụp Swift ?
không nên có một duy trì chu kỳ – newacct