当从内存中删除UIView时,swift deinit方法无效

时间:2016-07-13 14:14:05

标签: swift uiview uiviewcontroller deinit

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

例如

如果UIViewController班级deinit效果很好

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

但如果UIView班级deinit无法正常工作

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

任何想法。

1 个答案:

答案 0 :(得分:3)

父ViewController可以为您提供UIView。您必须将属性设置为nil,将UIView存储在父UIViewController中以便发布uiview。

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