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

例如

如果 UIViewControllerdeinit 工作得很好

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

但在 UIViewdeinit 不工作的情况下
class MusicPlayerView: UIView,UITableViewDelegate,UITableViewDataSource
{
deinit
    {
        APP_DELEGATE.RemovePlayerContents()
    }
}

任何想法 。

最佳答案

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

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

关于从内存中删除 UIView 时,swift deinit 方法不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38354162/

10-12 16:59