我正在看某人的代码,我知道一般的规则是,如果你有alloc/init,你需要释放那个内存。他使用了大量的NSMutableArrays,分配/初始化它们,但没有释放它们。如果我没有看到任何其他释放/自动释放消息发送到创建的阵列,我是否可以简单地将自动释放消息发送到该阵列?我基本上也不想让他的代码崩溃和停止工作。
使用NSMutableArrays时,当您发送消息addObject并且该数组中的对象增加其保留帐户时,如果该数组被释放,但该对象从未从该数组中获得release或removeObject,这是否也是内存泄漏?谢谢。
发布于 2011-06-02 00:14:00
NSArray和NSMutableArray在它们被销毁时释放它们的所有对象,因此,如果使用retain和release (或autorelease)正确管理数组,则其中的对象不会泄漏。但如果有从未发布的数组,它们将会泄漏,其中的所有内容也会泄漏。
在没有看到代码的情况下,很难提倡只在所有地方添加autorelease,但是对于只在单个函数的上下文中使用的数组(并且没有分配给ivar或静态变量),答案是肯定的,它们应该是autoreleased。或者更通俗地说,使用像+arrayWithCapacity这样的方法创建它们,该方法返回一个已经添加到自动释放池中的对象。
https://stackoverflow.com/questions/6204302
复制相似问题