所以我的游戏中有内存泄漏。我认为它来自Admob和游戏中心集成。有什么建议可以解决这个问题吗?我尝试使用泄漏仪器找到问题,但我不知道该怎么做。还有值得解决泄漏问题吗?我每次都有大约7次泄漏。
//Ad banner
self.banner = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
self.banner.adUnitID = "ca-app-pub-3940256099942544/6300978111"
self.banner.rootViewController = self
let request: GADRequest = GADRequest()
self.banner.load(request)
self.banner.frame = CGRect(x: 0,y: view.bounds.height - self.banner.frame.size.height, width: self.banner.frame.size.width, height: self.banner.frame.size.height)
self.view.addSubview(self.banner!)
//gamecenter authentication
func authPlayer () {
let player = GKLocalPlayer.localPlayer()
player.authenticateHandler = {
(view, error) in
if view != nil {
self.present(view!, animated: true,completion: nil)
}
}
}
答案 0 :(得分:1)
使用打印消息将deinit
添加到您的类中,以确定哪些类不应该死亡。然后,转到实例化这些类的位置,并使用可选类型生成weak
或unowned
个变量。
如果这不能解决问题,那么你可能会遇到闭包问题,但是只有在你理解ARC的基础知识之后我才会担心学习闭包捕获漏洞。
这是一个很棒的教程,它展示了ARC如何工作以及如何更详细地追踪泄漏:
https://www.raywenderlich.com/134411/arc-memory-management-swift
对于你的第二个问题,不,内存泄漏对你来说可能不是一个大问题。但是,它们也可能是一个巨大的问题。找出答案的方法是让你的应用程序保持一整天,或花半小时通过不同的级别,看看你的内存使用量是否持续上升。
如果你的记忆力不断增加,那么你就会遇到一个肯定需要修复的问题。否则,您的应用只会使用比所需更多的资源,这不是理想的,但也不一定非常关键。