大佬教程收集整理的这篇文章主要介绍了ios – Firebase observeSingleEvent停留在内存中,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
func loadPoststest() { FIRDatabase.database().reference().child("posts").observeSingleEventOfType(.Value,withBlock: { (snapshot: FIRDataSnapshot) in print(snapshot.value) }) }
当程序启动时,我以大约2,3次的速度快速按下测试按钮,并观察如下所示的记忆图。内存上升,请求后不会回退。这个问题长期影响我的应用程序,因为我的应用程序的内存将从70mb增长到150 mb。有什么理由吗?
请注意,短暂的五秒钟的休息是我停止,以确保打印出所有“快照”。
注2 …当我停止按下按钮时,内存将保持在与“短暂休息部分”相同的级别。只是让你认为它无限期地长大
——-更新———-
为了进一步确认问题,我创建了一个没有任何东西的全新项目,但是firebase导入,故事板中的一个按钮,具有以下代码,并在我的6s上模拟(模拟模拟器似乎没有这个问题)。下面的图片证明,这里有一些有趣的事情发生在火炉上,因为我的记忆在一分钟左右的时间里,从11.1mb降到了17.3mb,有303个请求。
import UIKit import Firebase class ViewController: UIViewController { var count: Int = 0 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view,typically from a nib. } @IBACtion func TESTBtnPressed(sender: AnyObject) { FIRDatabase.database().reference().child("posts").observeSingleEventOfType(.Value,withBlock: {[weak self] (snapshot: FIRDataSnapshot) in print(self?.count) self?.count += 1 }) }
正如你所看到的,绝大多数内存消耗是由于与调试相关的性能工具。您可以通过编辑您的方案来禁用此功能:
然后禁用回溯记录:
它被禁用,同样〜128个点击显示基本上没有增长:
假设您可能不希望将其禁用,因为您@R_294_9381@它有助于诊断调试版本中的崩溃和其他问题。这不应该是发布版本的问题!
import UIKit import FirebaseDatabase class ViewController: UIViewController { @IBOutlet weak var label: UILabel! private var count: Int = 0 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view,typically from a nib. } @IBACtion func TESTBtnPressed(sender: AnyObject) { let db = FIRDatabase.database().reference() db.child("posts").observeSingleEventOfType(.value) { [weak self] (snap: FIRDataSnapshot!) in guard let this = self else { return } this.count = this.count + 1 this.label.text = "\(this.count)" } } }
以上是大佬教程为你收集整理的ios – Firebase observeSingleEvent停留在内存中全部内容,希望文章能够帮你解决ios – Firebase observeSingleEvent停留在内存中所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。