swift 当 UIView 从内存中移除时,deinit 方法不起作用

swift deinit method not working when UIView is removed from memory

Swift 中,当任何 UIViewController 从内存中删除时,ARC 正在调用 deinit,但如果从内存中删除任何 UIView,则不会调用它。

例如

如果 UIViewController Class deinit 效果很好

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

但如果 UIView Class deinit 不工作

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

任何想法。

Parent ViewController 可以容纳你的 UIView。您必须将 属性 设置为 nil,这会将您 UIView 存储在父 UIViewController 中以用于发布 uiview。

或覆盖 removeFromSuperview() 并将您的 deinit 代码放入其中。