UIViewController及UIView未deinit釋放

weixin_34050427發表於2019-01-10

UIViewController和UIView未執行deinit原因有很多,有的時候controller釋放了controller上的uiview未釋放,需要多多注意。

原因總結:

  1. 閉包中使用到了self
    解決:
    使用[weak self] 或者[unowned self]

  2. 使用了delegate
    解決:
    delegate使用weak修飾,報錯:使protocol繼承於class

  3. 使用了定時器,定時器未釋放
    解決:
    釋放定時器

  4. 使用了監聽kvo 通知notification
    解決:
    及時remove掉監聽和通知

  5. AVPlayer中URLSession未釋放
    解決:

self?.session?.invalidateAndCancel()

相關文章