ios – Xcode控制台调试输出

ios – Xcode控制台调试输出,第1张

概述我从firebase下载数据并将数据显示到tableView上.但是,我发现我的tableView中偶尔会出现重复的内容.我最初认为我不小心在PostService.ps.posts数组中插入了相同的内容.但是,在我重新加载tableView之前设置了一个断点之后,我在控制台中键入了以下命令,输出很奇怪. print PostService.ps.posts 如下面的输出所示,item [4]和i 我从firebase下载数据并将数据显示到tableVIEw上.但是,我发现我的tableVIEw中偶尔会出现重复的内容.我最初认为我不小心在postservice.ps.posts数组中插入了相同的内容.但是,在我重新加载tableVIEw之前设置了一个断点之后,我在控制台中键入了以下命令,输出很奇怪.

print postservice.ps.posts

如下面的输出所示,item [4]和item [6]有{…},我不知道它们代表什么(这是我第一次使用console命令进行调试).在我的tableVIEw中.我看到的数据按以下顺序显示[1],[2],[3],[5],[6],[7],[8],[9](对于第0行到第8行).所以看起来第3行(从0开始)获得与第2行相同的数据,第5行获得与第4行相同的数据.很奇怪?

我不确定为什么会发生这种情况,我无从何处开始,因为它不会每次都发生.我希望这个控制台输出能帮助我指出正确的方法

[1] = 0x000000012f4849b0 {    _postKey = "-KQTh_WDO2IS1rYfLgnU"    _userID = "SpmZmYwD3Td04sQZxOYeALwuMp03"  }  [2] = 0x0000000130e61f40 {    _postKey = "-KQTHnE4IIEBR3tyDM3r"    _userID = "1isMS98ZmXYrpCmGb4o5voaAqXH2"    _image = "www.image2.com"  }  [3] = 0x0000000130192b40 {    _postKey = "-KQtN4YG51HOF19FrM8s"    _userID = "SpmZmYwD3Td04sQZxOYeALwuMp03"    _image = "www.image3.com"  }  [4] = 0x0000000130192b40 {...}  [5] = 0x0000000130269560 {    _postKey = "-KR2On6u7dRy0GAvE1Gn"    _userID = "SpmZmYwD3Td04sQZxOYeALwuMp03"    _image = "www.image4.com"  }  [6] = 0x0000000130269560 {...}  [7] = 0x000000013150f4c0 {    _postKey = "-KQThGLVA-MsviGMsXOS"    _userID = "1isMS98ZmXYrpCmGb4o5voaAqXH2"    _image = "www.image5.com"  }  [8] = 0x000000012fa88890 {    _postKey = "-KQt269uHGM99oFKuJRt"    _userID = "SpmZmYwD3Td04sQZxOYeALwuMp03"    _image = "www.image6.com"  }  [9] = 0x000000012f9bcad0 {    _postKey = "-KQThdCAm-PlCsCnXcBZ"    _userID = "SpmZmYwD3Td04sQZxOYeALwuMp03"  }

我的所有表数据都是根据postservice.ps.posts中的数据配置的,这些数据的类型为[Post]
在我的vIEwForheaderInSection(我在我的应用程序中使用此而不是cellForRowAtIndexPath)中,我有以下代码来配置表

if let cell = tableVIEw.dequeueReusableheaderfooterVIEwWithIDentifIEr("tableSectionheader") as? tableSectionheader {        let post = postservice.ps.posts[section]        var image: UIImage?        if let url = post.imageUrl {            image = discoverVC.imageCache.objectForKey(url) as? UIImage        }                    cell.configureCell(post,image: image)        cell.delegate = self        return cell    } else {        return tableSectionheader()    }
解决方法 最后,我开始知道为什么有些元素将描述显示为{…}.这是由于重复的参考对象打印.在控制台实际对象中让我们看到内容,但重复对象只显示{…}.在您的情况下,您有[3]和[4]元素,[5]和[6]元素具有相同的引用,因此重复元素显示{…}.为此,我尝试了一个简单的例子.希望它会对此有所清晰.

import UIKitclass VIEwController: UIVIEwController {    class model {        let first = "first"        let second = "second"    }    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        var array = [model]()        let obj = model()        let obj1 = model()        array.append(obj) // original objct        array.append(obj) // duplicate because classes are referece types        array.append(obj) // duplicate because classes are referece types        array.append(obj1) // new Object        print(array)    }    overrIDe func dIDReceiveMemoryWarning() {        super.dIDReceiveMemoryWarning()        // dispose of any resources that can be recreated.    }}

输出:

(lldb) print array([SampleDeBUGApp.VIEwController.model]) $R0 = 4 values {  [0] = 0x00007fed8ac93990 (first = "first",second = "second")  [1] = 0x00007fed8ac93990 {...}  [2] = 0x00007fed8ac93990 {...}  [3] = 0x00007fed8ac939d0 (first = "first",second = "second")}(lldb)

注意:它只发生在类对象的数组上.因为class是引用类型.

总结

以上是内存溢出为你收集整理的ios – Xcode控制台调试输出全部内容,希望文章能够帮你解决ios – Xcode控制台调试输出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1009802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存