调用实例的描述方法时swift内存泄漏
在调用实例日志上的描述时发生内存泄漏调用实例的描述方法时swift内存泄漏,swift,memory-leaks,automatic-ref-counting,instruments,variadic-functions,Swift,Memory Leaks,Automatic Ref Counting,Instruments,Variadic Functions,在调用实例日志上的描述时发生内存泄漏 public func writeLog(logs:AnyObject!...) { for i:Int in 0 ..< logs.count { if let logg = logs[i] { var log:String?=logg.description log = nil } } } 这是仪器内存泄
public func writeLog(logs:AnyObject!...) {
for i:Int in 0 ..< logs.count {
if let logg = logs[i] {
var log:String?=logg.description
log = nil
}
}
}
这是仪器内存泄漏的截图
回溯泄漏
非常感谢您对解决此问题的任何帮助 这是一个类型转换问题,但我不知道为什么AnyObject.description会导致这个问题
而不是这个
if let logg = logs[i] {
var log:String?=logg.description
log = nil
}
尝试像这样更改代码
if let logg = logs[i] as! String{
var log:String?=logg.description
log = nil
}
这不会造成任何内存泄漏
所以包括条件分支来检查实例的类型,并执行类型转换和调用描述
瞧!!!:) writeLog1与writeLog相同吗?是的,现在我已经编辑了我的问题。问题可能出在该对象的描述方法中?如果单击地址字段末尾的箭头,您会在仪器中看到什么?(我认为应该有一个堆栈跟踪,精确显示泄漏内存的分配位置。)@RhythmicFistman-它只是一个快速字符串…因此在这种情况下,描述是它自己的方法。
if let logg = logs[i] as! String{
var log:String?=logg.description
log = nil
}