我现在已经多次出现这个错误了,我使用了不同的解决方法,但我真的很好奇它为什么会发生.基本情况如下:
class SomeClass {
var coreDataStuff = CoreDataStuff!
lazy var somethingElse = SomethingElse(coreDataStuff: coreDataStuff)
}
Run Code Online (Sandbox Code Playgroud)
所以我理解我不能在类完全初始化之前使用self,但是在这种情况下我使用self属性coreDataStuff初始化一个懒惰的var,直到我的实例准备好才会发生.
任何人都可以解释我为什么会收到
Instance member can not be used on type错误?
我想测试是否删除deinit视图控制器中的所有键值观察器。
在测试类中,我定义了以下方法来启动视图控制器生命周期
func startLifecycle() {
_ = viewController.view
}
Run Code Online (Sandbox Code Playgroud)
在我的测试方法中,我试图deinit通过简单地将nil分配给我的视图控制器实例来调用
testViewController = nil
XCTAssert for stuff...
Run Code Online (Sandbox Code Playgroud)
但是deinit执行测试时不会调用。我在VC的代码中没有看到明显的保留周期,更何况是在应用程序中运行代码而不是在测试环境中运行代码时,deinit因此似乎不会将视图控制器保留在内存中。
测试时释放视图控制器的正确方法是什么?