仪器显示这些代码行导致内存泄漏,我做错了什么?
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
类。
编辑:截图:
答案 0 :(得分:0)
您正在展开可选对象。尝试将行this
更改为
self.image = URL(string: data["img"].stringValue)!
此if let url = URL(string: data["img"].stringValue) {
self.image = url
}
行
self.headerImage = URL(string: data["header"].stringValue)!
强制展开不是一个好习惯,你应该尽可能避免它。希望这有帮助!
答案 1 :(得分:0)
if let image_url = URL(string: data["img"].stringValue)
{
self.image = image_url
}
......这也是......
if let header_url = URL(string: data["header"].stringValue)
{
self.headerImage = image_url
}
如果JSON
类型subscript
返回Optional
,您可以选择吗?