我目前在我的目标 c 程序中有很大的内存泄漏,我正在尝试找到它并修复它(显然!)我遇到的问题是我使用 ARC 创建了程序,所以我不能只是制作我自己的发布实现或类似的东西,以查看对象何时或是否被释放。
更糟糕的是,我不确定我是否完全理解分配工具。我发现太多的内存被分配,然后没有被我认为是在单独的线程中创建的可变字符串释放,但我不知道如何解决这个问题!我以为我已经销毁了对包含它的对象的所有引用,但显然不是?
找到泄漏的确切位置的最佳方法是什么?或者,如果有人有修复,修复它?
我目前在我的目标 c 程序中有很大的内存泄漏,我正在尝试找到它并修复它(显然!)我遇到的问题是我使用 ARC 创建了程序,所以我不能只是制作我自己的发布实现或类似的东西,以查看对象何时或是否被释放。
更糟糕的是,我不确定我是否完全理解分配工具。我发现太多的内存被分配,然后没有被我认为是在单独的线程中创建的可变字符串释放,但我不知道如何解决这个问题!我以为我已经销毁了对包含它的对象的所有引用,但显然不是?
找到泄漏的确切位置的最佳方法是什么?或者,如果有人有修复,修复它?
您可以观看名为“学习工具”的 WWDC 2012 会议(会议 409)。视频在这里。
dealloc
您可以通过在其实现中记录一条消息来查找对象何时消失。但是,如果它没有被解除分配,那么您一开始就不会到达那里。
你说references to the object that contains it
和也separate thread
。如果您使用块来编写在单独线程中执行的代码,请注意您可能通过self
在块中引用而创建的保留圈。
编辑:
如果您不知道我在说什么,请查看`self` 上的保留循环,其中包含块和块、自我、保留循环