gpt4 book ai didi

ios - 快速内存泄漏

转载 作者:行者123 更新时间:2023-12-01 19:38:26 26 4
gpt4 key购买 nike

我需要一些帮助来确定造成这些内存泄漏的原因。我创建了一个简单的程序来调用api并获取数据。它按预期工作。但是在仪器中,我遇到了内存泄漏的问题。我一直在努力找出导致此内存泄漏的原因,但是没有运气。我还在“调试内存”图中尝试过,当我过滤“仅显示泄漏的块”时,没有显示块。以下是Instrument的代码和屏幕截图:

import UIKit

class ViewController: UIViewController {

struct main_struct {
var ACCEPT_DATE: String

init(_ dictionary: [String: Any]) {

self.ACCEPT_DATE = dictionary["ACCEPT_DATE"] as? String ?? " "

}
}

var main_array = [main_struct]()

override func viewDidLoad() {
super.viewDidLoad()
let Endpoint: String = "http://mylink.com"
let url = URL(string: Endpoint)
downloaddatafromurl(url: url!, completionhandler: { [weak self] (data, response: URLResponse, Error) -> Void in

if Error != nil {
print("error in API Connect")
}
let jsondata = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String : NSArray]
let arrayJSON = jsondata?["apidata"]
for dict in arrayJSON! {
self!.main_array.append(main_struct(dict as! [String : Any]))
}

//print(data)
print(response)
})



}

func downloaddatafromurl(url: URL, completionhandler: @escaping (Data, URLResponse , Error? ) -> Void) {

let session = URLSession.shared
let task = session.dataTask(with: url, completionHandler: {data, response, error -> Void in
DispatchQueue.global().async {
completionhandler (data!, response!, error)
}
})
task.resume()
session.finishTasksAndInvalidate()
}
}


乐器的屏幕截图:

最佳答案

您可以使用Instruments跟踪内存泄漏:请参阅this tutorial.

如果您熟悉Valgrind,请在针对iPhone Simulator SDK构建的x86二进制文件see how Landon Fuller does it上使用它。

Another Stackoverflow answer建议使用Clang分析器:对代码的静态分析也可以检测到内存分配错误。我自己从未使用过此工具,但很高兴知道它是可能的。

也是苹果的Introduction to Instruments User Guide

关于ios - 快速内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59004642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com