【发布时间】:2014-05-29 12:06:26
【问题描述】:
在我的一个项目中,我有一个相当复杂的数据模型。 我需要一种方法来确保我或其他同事不会创建保留周期,并且我想使用自动化方法。
有没有办法保证所有的“dealloc”方法都被调用?
【问题讨论】:
标签: objective-c testing automatic-ref-counting
在我的一个项目中,我有一个相当复杂的数据模型。 我需要一种方法来确保我或其他同事不会创建保留周期,并且我想使用自动化方法。
有没有办法保证所有的“dealloc”方法都被调用?
【问题讨论】:
标签: objective-c testing automatic-ref-counting
您可以尝试静态分析器(从菜单:产品 - 分析或快捷方式 Shift+CMD+B)。或者您创建单元测试https://developer.apple.com/library/ios/documentation/ToolsLanguages/Conceptual/Xcode_Overview/UnitTestYourApp/UnitTestYourApp.html 并检查对象retainCount。
泄漏仪器也可能有帮助:http://www.raywenderlich.com/2696/instruments-tutorial-for-ios-how-to-debug-memory-leaks,https://developer.apple.com/library/mac/documentation/developertools/conceptual/instrumentsuserguide/MemoryManagementforYouriOSApp/MemoryManagementforYouriOSApp.html
【讨论】:
你无法自动测试这些东西。你可以做的事情:
self 时要小心(知道何时使用__weak id self)。Instruments 并在应用程序运行时检查泄漏【讨论】:
如果您想这样做,您需要自己设计和编程。
例如你可以:
现在在开发和测试期间在适当的地方运行测试,以检查是否意外引入了循环。
您也许可以通过使用运行时的设施在没有协议的情况下实现这一点,您当然可以给任意实例发现它的 ivar 以及 ivar 是否是对象引用。尽管确定 ivar 是强还是弱,您可能会陷入困境。虽然更普遍,这可能更难实现,但一旦完成......
HTH
【讨论】: