ios - Retain cycle TableView -


i trying break retain cycle couldn’t it. can’t find source of retain cycle.

 class myviewcontroller: uiviewcontroller {      weak var refreshheaderview: pzpulltorefreshview?      lazy var tableview: uitableview = {         [unowned self] in //with or without doesn’t make difference         let tableview = uitableview()         tableview.delegate = self         tableview.datasource = self         tableview.separatorstyle = .none         tableview.registerclass(customviewcell.self, forcellreuseidentifier: "cell")         return tableview         }()      deinit {         println("deinit view")     }      override func viewdidload() {         super.viewdidload()         view.addsubview(tableview)         tableview.frame = view.frame         if refreshheaderview == nil {             println("adding")              var view = pzpulltorefreshview(frame: cgrectmake(0, 0 - tableview.bounds.size.height / 2, tableview.bounds.size.width, tableview.bounds.size.height / 2 ))             view.delegate = self             self.tableview.addsubview(view)             refreshheaderview = view         } … …  extension myviewcontroller: uitableviewdelegate, uitableviewdatasource, pzpulltorefreshdelegate {  // usual tableview methods }   // deinit part of pzpulltorefreshview     deinit {         delegate = nil         activityview = nil         statuslabel = nil         arrowimage = nil         lastupdatedlabel = nil         println("deinit refresh")     } 

when push view navigation controller, see "deinit view” once when view loaded. don’t “deinit refresh” refresh controller. means retains. if use below code, see deinit refresh.

 override func viewdiddisappear(animated: bool) {         super.viewdiddisappear(animated)          if self.navigationcontroller?.visibleviewcontroller == self {             self.refreshheaderview?.removefromsuperview()     } } 


Comments