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 代码放入其中。
在 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 代码放入其中。