从内存中删除 UIView 时,快速 deinit 方法不起作用
Posted
技术标签:
【中文标题】从内存中删除 UIView 时,快速 deinit 方法不起作用【英文标题】:swift deinit method not working when UIView is removed from memory 【发布时间】:2016-07-13 14:14:04 【问题描述】:在Swift
中,当任何UIViewController
从内存中删除时,ARC 正在调用deinit
,但如果从内存中删除任何UIView
,则不会调用它。
例如
如果 UIViewController
类 deinit
工作得很好
class MusicPlayerUIViewController: UIViewController,UITableViewDelegate,UITableViewDataSource
deinit
APP_DELEGATE.RemovePlayerContents()
但如果UIView
类deinit
不起作用
class MusicPlayerView: UIView,UITableViewDelegate,UITableViewDataSource
deinit
APP_DELEGATE.RemovePlayerContents()
任何想法。
【问题讨论】:
您确定要发布此视图吗? 你有没有得到答案 - 为什么 UIView 上的 deinit 方法没有被调用? 【参考方案1】:父 ViewController 可以容纳你的 UIView。您必须将一个属性设置为 nil,该属性将您的 UIView
存储在父级 UIViewController
中以发布 uiview。
或者覆盖 removeFromSuperview()
并将您的 deinit 代码放入其中。
【讨论】:
以上是关于从内存中删除 UIView 时,快速 deinit 方法不起作用的主要内容,如果未能解决你的问题,请参考以下文章
从 NSManagedObject deinit 的上下文中删除关系和对象