首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >URL内存泄漏

URL内存泄漏
EN

Stack Overflow用户
提问于 2017-03-10 20:19:59
回答 2查看 454关注 0票数 0

仪器显示这些代码行导致内存泄漏,我做错了什么?

代码语言:javascript
运行
复制
   required init(data: JSON) {
        self.type = data["type"].stringValue
        self.name = data["name"].stringValue
        self.numberOfRestaraunts = data["length"].intValue
        self.isFavourited = data["isFavourited"].boolValue
        self.image = URL(string: data["img"].stringValue)! //<- this
        self.id = data["id"].stringValue
        self.headerImage = URL(string: data["header"].stringValue)! //<- this
        if data["colorSchema"].stringValue == "Dark" {
            self.colorTheme = .dark
        } else {
            self.colorTheme = .light
        }
        self.color = data["color"].stringValue
        self.metaScore = data["metaScore"].intValue
        self.typeMetaScore = data["typeMetaScore"].int ?? 0
    }

它实际上表明,泄漏是NSURL类。

编辑:截图:

EN

回答 2

Stack Overflow用户

发布于 2017-03-10 20:59:07

您正在强制展开可选对象。尝试将行self.image = URL(string: data["img"].stringValue)!更改为

代码语言:javascript
运行
复制
if let url = URL(string: data["img"].stringValue) {
   self.image = url
}

这条self.headerImage = URL(string: data["header"].stringValue)!代码行

代码语言:javascript
运行
复制
if let url = URL(string: data["header"].stringValue) {
   self.headerImage = url
}

强制展开不是一个好的做法,你应该尽可能避免它。希望这能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2017-03-10 20:59:41

你能试试这个吗?

代码语言:javascript
运行
复制
if let image_url = URL(string: data["img"].stringValue)
{
    self.image = image_url
}

...and这个也是...

代码语言:javascript
运行
复制
if let header_url = URL(string: data["header"].stringValue)
{
    self.headerImage = image_url
}

您是否可以检查JSON类型subscript是否返回Optional

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42718307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档