2017-07-04 1 views
0

Ich möchte vollständig einen Verweis auf eine UIView entfernen, wenn es abgegriffen wird (es ist ein Subview.Swift Entfernen Bezug auf UIView

@IBAction private func handleTap(_ sender: UITapGestureRecognizer) { 
    if (delegate != nil) { 
     delegate?.imageWasTapped(imageView.image!, photoURL: photoURL!) 
     self.removeFromSuperview() 
    } 
    print ("tap") 
} 

removeFromSuperview() völlig unzureichend zu sein scheint, um die Instanz zu entfernen (was ich habe) lesen, würde so gerne

self = nil 

aber natürlich selbst ist unveränderlich.

ich habe versucht, den Wert meiner Superview als inout Argument übergeben, aber natürlich selbst immer noch unveränderlich.

 delegate?.imageWasTapped(imageView.image!, photoURL: photoURL!, imageView: self) 

Ist removeFromSumerview() sufficent eine UIView aus dem Speicher freizugeben, oder wie ist das beste getan?

+0

Wenn Sie ARC verwenden, überlassen Sie es dem System, Ihren Speicher für Sie zu verwalten. – Adeel

Antwort

4

Sie können einen schwachen Hinweis darauf UIView. Dann wird die UIView Null mit ARC sein, nachdem Sie es mit removeFromSuperview entfernt haben.