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

Anu*_*hra 3 uiviewcontroller uiview swift deinit

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

例如

如果UIViewControllerClassdeinit工作得很好

class MusicPlayerUIViewController: UIViewController,UITableViewDelegate,UITableViewDataSource
    {
    deinit
        {
            APP_DELEGATE.RemovePlayerContents()
        }
    }
Run Code Online (Sandbox Code Playgroud)

但如果UIView班级deinit不工作

class MusicPlayerView: UIView,UITableViewDelegate,UITableViewDataSource
{
deinit
    {
        APP_DELEGATE.RemovePlayerContents()
    }
}
Run Code Online (Sandbox Code Playgroud)

任何的想法 。

Igo*_*gor 6

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

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