镝 (Dysprosium) 是 E-sites iOS 套件 的一部分。
运行时对象的释放辅助工具。
此库纯粹用于调试目的。
##Swift PM
package.swift 依赖项
.package(url: "https://github.com/e-sites/dysprosium.git", from: "6.0.0"),
将其添加到您的应用程序/库目标中,将 "Dysprosium"
添加到您的 dependencies
中,例如像这样
.target(name: "BestExampleApp", dependencies: ["Dysprosium", "DysprosiumLogger"]),
// AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// ...
Dysprosium.shared.onDealloc { objects in
print("[INFO] Deallocated objects: \(objects)")
}
Dysprosium.shared.onExpectedDeallocation { object, message in
print("[WARNING] Expected deallocation of \(object): \(message)")
}
}
这样您可以轻松地查看哪些对象已被释放。
import Dysprosium
class SomeObject: DysprosiumCompatible {
// ...
deinit {
deallocated()
}
}
大多数情况下,当一个 UIViewController
消失时,它应该被释放。
使用 expectDeallocation()
,您可以监控它是否真的被释放。
import Dysprosium
class SomeViewController: UIViewController, DysprosiumCompatible {
// ...
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
expectDeallocation()
}
deinit {
deallocated()
}
}
如果一个对象被释放,但您需要检查一个底层对象是否也被释放
import Dysprosium
class SomeObject: DysprosiumCompatible {
// ...
let relatedObject: SomeObject
deinit {
relatedObject.expectDeallocation()
deallocated()
}
}
像这样禁用镝 (Dysprosium)
Dysprosium.shared.isEnabled = false