调用实例的描述方法时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
            }