代码之家  ›  专栏  ›  技术社区  ›  timbre timbre

Swift-如何查找类的所有实例,以及指向同一实例的所有引用?

  •  3
  • timbre timbre  · 技术社区  · 7 年前

    我继承了一个应用程序,其中某个类被实例化并来回传递多次。所以我有大约20个私有和公共变量

    1. 类实例化: myClass = MyClass()
    2. MyClass 实例来回传递: self.myClass = someOtherClass.myClass
    3. 有时变量从一个类传递到另一个类多次
    4. 在各种情况下,类可以创建新实例或从其他类接收实例

    我想解决这个问题。但在更改任何内容之前,我想了解该类有多少个实例,以及哪些引用指向同一实例。

    我现在做的是:我正在运行以下语句 每种方法 属于 类名 :

    print(Unmanaged.passUnretained(self).toOpaque())
    

    然后在调用方中添加额外的指纹,以确定调用该实例的人。这是相当乏味的,但更重要的是,如果这个类在运行时使用,它完全取决于我是否有能力覆盖所有可能的情况,而且它不会找到 nil 类之间可能传递的引用(我需要知道)

    那么有更好的方法吗?或者这种方法可以在某种程度上加以改进?

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Woodstock    7 年前

    听起来很简单,但为什么不在相关类中添加一个静态变量,并在init方法中增加它呢?

    这样,您将有一个实例数量的确定计数。

    (当然,在Denit()中递减)

    如果失败,则可以在appDelegate中使用全局变量类型MyClass数组。

    在MyClass初始化中,获取对委托的引用,并将其自身添加到数组中。

    在Deinit中使用弱引用或减量,以避免脏重分配的重复计数。

    这样,死实例将被释放,而不是被阵列保留。

    这样,您应该有一个实例的计数和列表。