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

时间:2018-11-13 20:04:51

标签: ios swift

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

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

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

我现在要做什么:我正在MyClass每个方法中运行以下语句:

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

,然后在调用方中附加打印以标识谁调用了该实例。这非常繁琐,但是,这完全取决于我是否有能力在运行时使用此类的情况下涵盖所有可能的情况,并且不会找到类可能相互传递的nil引用(而我需要知道的)

那么有更好的方法吗?还是可以以某种方式改进此方法?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

通过这种方式,您可以确定实例数。

(当然要在deinit()中减少它)

无法在appDelegate中使用“全局”变量类型MyClass数组。

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

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

这样,死掉的实例将被释放,而不是由数组保留。

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