Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用NSJSONSerialization时Swift泄漏大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想为NSDictionary写一个扩展,@R_679_9447@从数据中轻松创建它.我这样写的:

extension Dictionary {
    init?(data: NSData?) {
        guard let data = data else { return nil }
        // TODO: This leaks.
        if let json = (try? NSJSONserialization.JSONObjectWithData(data,options: NSJSONReadingOptions())) as? Dictionary {
            self = json
        }
        else { return nil }
    }
}

无法找出泄漏的原因.有任何想法吗?@H_874_10@

解决方法

在我的例子中,当我试图从中获取子字典时,事实证明问题出现在后者的使用中.准确地说,在这代码中:

var LOCATIOn: CLLOCATIOn? = nil
if let geometryDictionary = json["geometry"],LOCATIOnDictionary = geometryDictionarY["LOCATIOn"],latitude = LOCATIOnDictionarY["lat"] as? CLLOCATIOndegrees,longitude = LOCATIOnDictionarY["lng"] as? CLLOCATIOndegrees {
    LOCATIOn = CLLOCATIOn(latitude: latitude,longitude: longitudE)
}

问题是我收到了geometryDictionary和LOCATIOnDictionary引用而没有指定它们的类型,所以编译器假设它们是AnyObject.我仍然可以从字典中获取它们的值,因此代码可以工作.当我向他们添加类型时,泄漏就停止了.@H_874_10@

var LOCATIOn: CLLOCATIOn? = nil
if let geometryDictionary = json["geometry"] as? [String : AnyObject],LOCATIOnDictionary = geometryDictionarY["LOCATIOn"] as? [String : AnyObject],longitude: longitudE)
}

大佬总结

以上是大佬教程为你收集整理的使用NSJSONSerialization时Swift泄漏全部内容,希望文章能够帮你解决使用NSJSONSerialization时Swift泄漏所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。