2016-07-13 22 views
0

In Swift ARC ruft deinit auf, wenn eine UIViewController aus dem Speicher entfernt wird, aber es wird nicht aufgerufen, wenn UIView aus dem Speicher entfernt wird.Swift-Deinit-Methode funktioniert nicht, wenn UIView aus dem Speicher entfernt wird

zum Beispiel

Bei UIViewController Klasse deinit arbeitet groß

class MusicPlayerUIViewController: UIViewController,UITableViewDelegate,UITableViewDataSource 
    { 
    deinit 
     { 
      APP_DELEGATE.RemovePlayerContents() 
     } 
    } 

aber bei UIView Klasse deinit funktioniert nicht

class MusicPlayerView: UIView,UITableViewDelegate,UITableViewDataSource 
{ 
deinit 
    { 
     APP_DELEGATE.RemovePlayerContents() 
    } 
} 

eine Idee .

+0

Sind Sie sicher, dass Sie diese Ansicht freigeben? – Igor

Antwort

3

Parent ViewController kann Sie UIView halten. Sie müssen auf null eine Eigenschaft setzen, die Sie UIView in Eltern UIViewController für die Veröffentlichung uiview gespeichert hat.

Oder überschreiben Sie removeFromSuperview() und legen Sie Ihren Deinit-Code darin.