【发布时间】:2015-07-29 12:19:30
【问题描述】:
概述:我正在创建一个 Swift 程序,该程序下载更新频繁(可能每秒几次)的实时 JSON 数据,然后在 tableView 中向用户显示。当程序开始时,它使用 GCD 在单独的线程中进行下载,本质上是在程序运行的整个过程中运行线程。
问题:程序可以很好地下载并显示数据,但我注意到程序的内存(如 Xcode 调试导航器中所示)的增长速度比传入的 JSON 数据快得多。几分钟之内,它就达到了几百 MB .
我从我的“协调器”对象调用 dispatch_async,该对象还存储我正在更新的实例变量的集合。这是我的代码
func startDownload() {
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), {
while (true) {
self.myDataPipe.downloadMarketOdds(self.marketsToUpdate)
dispatch_sync(dispatch_get_main_queue(), {
self.referenceToViewController!.reloadUpComingMarketsTableView()
self.referenceToViewController!.reloadMainTableView()
})
}
} ) // end of dispatch_async
// end of start()
}
我是 GCD 新手,在 stackoverflow 上进行了一些搜索,但还没有找到任何有用的东西。有人可以指出我正确的方向或指出我明显遗漏的东西吗?
提前致谢!
【问题讨论】:
标签: swift cocoa memory-leaks grand-central-dispatch