如何创建测试以确保没有保留周期?

时间:2014-04-15 08:40:32

标签: objective-c testing automatic-ref-counting

在我的一个项目中,我有一个非常复杂的数据模型。 我需要一种方法来确保我或其他同事不会创建任何保留周期,并且我想使用自动化方法。

有一种方法可以确保调用所有“dealloc”方法吗?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

你无法自动测试这些东西。你可以做的事情:

  1. 具有良好的编码标准和程序架构
    良好的架构将阻止许多保留周期。
  2. 在块中使用self时要小心(知道何时使用__weak id self)。
  3. 运行Instruments并在应用程序运行时检查泄漏

答案 2 :(得分:0)

如果你想这样做,你需要设计&自己编程。

例如你可以:

  1. 定义"连接"作为数据模型中类的实例的强引用。
  2. 定义一个协议,该协议提供"连接到" count方法和一个按索引返回连接提供连接迭代器。
  3. 让数据模型中的每个类都实现此协议。
  4. 现在给出了对您的数据模型的引用,这些协议方法为您提供了"图表" (对象是节点,连接是弧)。实施循环检查算法。
  5. 现在在开发期间的适当位置进行测试&检查是否意外引入循环。

    可能能够通过使用运行时的工具在没有协议的情况下实现这一点,你当然可以给任意实例发现它的ivars以及ivar是否是对象引用。虽然确定ivar是强还是弱,但你可能会陷入困境。虽然更普遍,但这可能更难实施,但一旦完成......

    HTH

相关问题