小编66o*_*66o的帖子

延迟var给出'实例成员不能用于类型'错误

我现在已经多次出现这个错误了,我使用了不同的解决方法,但我真的很好奇它为什么会发生.基本情况如下:

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错误?

lazy-evaluation ios swift

21
推荐指数
2
解决办法
4288
查看次数

如何测试ViewController的Deinit

我想测试是否删除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因此似乎不会将视图控制器保留在内存中。

测试时释放视图控制器的正确方法是什么?

unit-testing memory-leaks ios xctest swift

8
推荐指数
1
解决办法
2182
查看次数