2017-01-16 105 views
0

我在视图控制器上什么都不做,我看到了应用程序正在工作时变化的图形。内存泄漏Xcode 8仪器

这真的是泄漏吗?

enter image description here

它第一次显示绿色的对勾,然后它显示1个泄漏并没有新的泄漏。

因此,这意味着没有泄漏或仍然有1个泄漏,但不是新的泄漏?

我实际上有包含经理的强烈参考的应用程序委托。

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

+0

泄漏是泄漏;一旦物体泄漏,它会永远泄漏。但它只是一个对象,所以也许你并不在乎。如果需要,可以使用Instruments来追踪有问题的对象的内存管理。 – matt

+0

@matt,也许是错误的,是的,我明白了)但奇怪我只分配的服务导致泄漏,我可以分享来源? –

+0

有一个泄漏报告错误http://stackoverflow.com/questions/39944703/object-hierarchy-is-causing-a-memory-leak-in-swift因此,也许你的泄漏不是真实的。 – matt

回答

2

我要表明,有其实无泄漏。 Xcode的8.2版本说明说:

记忆调试器为MacOS和iPhone模拟器修复包含类型枚举的任字段,或者从某些目标C框架类继承的类夫特类报告假内存泄漏。 (27932061)

您正在使用的Xcode 8.1,所以我们知道有“假内存泄漏的雨燕类的报告”,在这个版本中(尽管在什么确切的情况,以及是否错误,即使在完全固定Xcode 8.2,仍然不清楚)。

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

enter image description here

+0

感谢您的帮助!)真的很感激它,因为我认为所有的应用程序都是用漏洞编写的,这很疯狂)感谢上帝和你 –