内存泄漏Xcode 8仪器

时间:2017-01-16 19:45:16

标签: ios swift xcode memory-leaks

我的视图控制器上没有任何操作,我看到应用程序工作时图形正在发生变化。

这真的泄漏了吗?

enter image description here

第一次显示绿色复选标记,然后显示1次泄漏,然后没有新的泄漏。

所以这意味着没有泄漏或者仍有1个泄漏而不是新泄漏?

我实际上是app delegate,它包含了manager的强引用。

class AppDelegate {

var applicationManager = ApplicationManager()

}

我在ApplicationManager中提供的服务很少

class ApplicationManager
{
  lazy var apiService: APIService = {

    let service = APIService()

    return service

  }()

  lazy var facebookService: FacebookService = {

    let service = FacebookService()

    return service

  }()
}

我有一个功能

func logInUser()
  {
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
      fatalError()
    }

    let apiService = appDelegate.applicationManager.apiService

    guard let email = emailTextField.text, let password = passwordTextField.text else {
      return
    }
    apiService.loginUserWith(email, password: password) {(result) in
}

这段代码会导致问题吗?

使用新工具我也看到了

我有一个泄露的对象(它在另一个以前的项目中)但具有相同的经理和服务实现。

enter image description here

1 个答案:

答案 0 :(得分:2)

我会建议事实上没有泄漏。 Xcode 8.2发行说明中说:

  

macOS和iOS模拟器的内存调试器修复了包含enum类型字段或从某些Objective-C框架类继承的类的Swift类的虚假内存泄漏报告。 (27932061)

您正在使用Xcode 8.1,因此我们知道此版本中存在“报告Swift类的错误内存泄漏”(尽管在什么样的情况下,即使在Xcode 8.2中错误是否完全修复,仍然不清楚我)。

此外,我下载了你的github示例项目并在Xcode 8.2.1中运行它并且没有报告泄漏,无论是仪器还是内存图。这是仪器输出:

enter image description here