首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找一种在仪器之外验证和检查任何保留周期的方法

问寻找一种在仪器之外验证和检查任何保留周期的方法
EN

Stack Overflow用户
提问于 2016-07-06 23:08:23
回答 1查看 51关注 0票数 0

仪器是一个累赘的工具,它的内存泄漏检查往往找不到保留周期。示例:委托模式(委托不是弱的)肯定会创建一个保留周期,但不知何故泄漏不会出现。一个保持循环肯定是一个漏洞吗?寻找一个仪器之外的日志机制-代码,我可以嵌入到我的项目,以检测这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-10 01:18:08

尝试了这个手动记录器,您可以对正在分析的类的init进行如下操作:

代码语言:javascript
复制
struct WeakStruct {
   weak var weakObject: AnyObject?
  let objectName: String
}


public class RetainCycleLogger {
     var weakStructs = [WeakStruct]()
     public static let sharedInstance = RetainCycleLogger()

     public func addObject(object: AnyObject) {
          weakStructs.append(WeakStruct(weakObject: object, objectName: classNameAsString(object)))
     }

     func count(object: AnyObject) -> Int {
         let classname = classNameAsString(object)
         return weakStructs.filter({$0.objectName == classname}).flatMap({$0.weakObject}).count
     }

     func classNameAsString(obj: Any) -> String {
         return String(reflecting: obj)
     }

     public func printAllCounts() {
         let classes = weakStructs.filter({$0.weakObject != nil}).map({$0.objectName})
         let uniqueClasses: [String] = Array(Set(classes))
         for className in uniqueClasses {
             print("---- Class: \(className) \(classes.filter({$0 == className}).count)")
         }
     }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38235236

复制
相关文章

相似问题

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