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
Post a Comment