【发布时间】:2017-02-27 15:55:00
【问题描述】:
根据 Instruments,我的 iOS 应用程序正在泄漏内存。
我一直在寻找这是什么原因造成的,显然 Swift 不喜欢 25000 个字符的 base64 字符串。当我跑步时
leaks Application
在命令行中我收到以下错误:
Leak: 0x7fd8a510b600 size=25088 zone: MallocHelperZone_0x11cc7a000 CFString ObjC CoreFoundation length: 24708
我使用以下代码将 base64 字符串转换为 UIImage:
// MARK: Initialization
init?(id: Int, name: String, logo: Any) {
self.id = id
self.name = name
if logo is String {
var logo = logo as! String
// Swift can't handle the data:image/png;base64, part of the base64 string so we remove it
if let range = logo.rangeOfString(";base64,", range: logo.startIndex..<logo.endIndex) {
logo.removeRange(logo.startIndex..<range.endIndex)
// Lets turn it into an UIImage
let imageData = NSData(base64EncodedString: logo, options: NSDataBase64DecodingOptions(rawValue: 0))
if imageData != nil {
self.logo = UIImage(data: imageData!)!
}
}
} else if logo is UIImage {
self.logo = logo as? UIImage
} else {
self.logo = UIImage()
}
super.init()
}
有人知道我该如何解决这个问题吗?
【问题讨论】:
-
过去一周我一直在努力解决类似的问题...
标签: ios swift memory-leaks