快速deinit方法不调用

时间:2019-05-09 07:00:25

标签: ios swift4.2 deinit

UIViewController deinit方法中未在ios swift4.2中调用

我尝试使用以下代码在未调用viewController popToViewcontroller方法中导航之后导航到下一个deinit

 let data = isSearchEnabled ? repository.filteredList[index] : repository.list[index]
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    (appDelegate.window?.rootViewController as! UITabBarController).tabBar.isHidden = true
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let viewController = storyboard.instantiateViewController(withIdentifier: "AuctionDetailsViewController") as! AuctionDetailsViewController
    viewController.auction = data.getAuctionData()
    viewController.parentVC = self
    parentNavigationController?.pushViewController(viewController, animated: true)

PushView:

deinit {
    print("AuctionDetailsViewController deallocated...")
}

以上deinit方法应在popToViewcontroller上调用

1 个答案:

答案 0 :(得分:0)

您需要了解使用ARC在iOS上完成的内存管理。您可以阅读此here

如果viewcontoller ...,则不会调用Deinit()...

  

保留对象的强引用(保留周期)

     
    

您需要检查并删除对对象的不必要的强引用,以避免零售周期

  
     

具有通知查看器

     
    

您需要注销观察者,因为通知中心会保留该观察者,直到您注销它为止。

  
     

代表的使用(对此有很强的借鉴作用)

     
    

如果视图控制器确认委托的协议应标记为weak

  

以上提到的一些要点可以防止视图控制器取消分配和从未调用deinit。可能也有其他原因。