final class MyDispatchGroup: DispatchGroup {
deinit {
print("DEINIT")
}
}
var dispatchGroup: MyDispatchGroup? = MyDispatchGroup()
dispatchGroup = nil
我找不到有关它的任何信息,但我很好奇它为什么如此运行。
调度对象不符合各种继承行为。尝试覆盖init
。(如果您查看指定的初始化程序的标题,则说“ /* not inherited */
”。)或尝试在子类中实现另一个方法,然后从实例中调用它。或者,为您的课程提供强大的参考,并在“ Debug Memory Graph”导航器中查找它,而您在那儿找不到它。这种传统的继承行为均无效。
调度对象具有复杂的历史。最初,它们是通过C API公开的,并且不符合ARC。然后,他们向此C API对象添加了ARC功能(可以使用编译时标志打开或关闭ARC功能)。然后,他们用更传统的Swift对象类定义包装了C API,但实际上仍在幕后使用此旧C API。
底线,DispatchGroup
不支持子类化。不能将DispatchGroup子类化-“仅通过Objective-C运行时可见”?提示此问题已在iOS 10+中“修复”,但事实并非如此。我唯一的问题是,鉴于所有这些,为什么在所有这些时间之后仍未声明DispatchGroup
为final
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句