在swift 类中有一个方法deinit(),我们可以在其中定义类的实例将从内存中删除.我们如何知道struct将从内存中删除?
例如,
struct Vehicle { ... }
var v: Vehicle? = Vehicle()
v = nil
Run Code Online (Sandbox Code Playgroud) 我已经addObserver:selector:name:object:进入了viewDidLoad.
我正在用removeObserver:name:object:它viewWillDisappear:animated:来移除观察者.
如果我通过传递错误的参数来删除观察者,会发生什么removeObserver:name:object:?
(例如,如果我向参数name或错误对象传递错误通知,则不会删除观察者object或Observer)
如果观察者在调用后仍然不是nil removeObserver:name:object:,我可以发现删除观察者失败,因为notifySelector将被调用.
但如果观察者在打电话后变为零removeObserver:name:object:,我就无法确定是否移除观察者是否失败.
当观察者变为零时,观察者会自动移除吗?
或做notification dispatch table的NSNotificationCenter越来越大,大,并最终应用变得慢?
编辑
当我为观察者使用UIViewController对象的子类时,在dealloc调用ViewController之后应用程序不会崩溃.
但是当我使用其他类的对象时,应用程序会在dealloc调用对象后崩溃.
我想知道在每个视图控制器上实现 adeinit以检查它消失时是否被正确删除并避免内存泄漏是否是一个好习惯?