我太傻了,不知道这个答案-有人绝对知道答案吗?

NSMutableArray *happyDictionaryEntries;
@property (nonatomic, retain) NSMutableArray *happyDictionaryEntries;

-(void) getStuffFromServer
 {
 ..
 self.happyDictionaryEntries = [NSMutableArray
  arrayWithContentsOfURL:[NSURL URLWithString:aUrl]];
 }


稍后我们将释放该数组。我想实际释放数组的所有元素。

因此,我们将[happyDictionaryEntries发布]。

(或者我想只是self.happyDictionaryEntries = nil,因为它是一个属性。)

但是,您还必须要[happyDictionaryEntries removeAllObjects]吗?

AND / OR您是否必须手动释放数组中的每个项目?

(确实是一个相关的问题-有人知道removeAllObjects实际上是否释放了每个对象吗?还不清楚情况是什么。)是否有一种成语?

在您自己构建的典型数组中,我无法管理内存,但是我太傻了,无法理解当混合使用arrayWithContentsOfURL时的情况。如果有人绝对知道答案,谢谢!

“ NSArray和NSMutableArray的文档说明了内存管理行为-Joshua”

正确。您是否有关于removeAllObjects或arrayWithContentsOfURL的任何文档?任何人都可以果断地声明removeAllObjects做什么?谢谢。

“摘自Apple的《内存管理编程指南》:[颇有名气的doco]”-jlehr。

正确,但是removeAllObjects有什么作用?有人知道吗?

注意没有关于它的文档。 NSMutableDisctionary removeAllObjects上的文档例如是显式的。但是NSMutableArray removeAllObjects上的文档显然没有什么意义。可能就像(举个例子)imageNamed基本上不起作用,并且不像人们期望的那样起作用。

最佳答案

是的,NSArray,NSSet和NSDictionary类都保留其中包含的对象。当NSArray,NSSet或NSDictionary对象的保留计数达到零时,所有保留的对象都作为dealloc的一部分释放。 removeAllObjects还将释放所有保留的对象。

07-24 18:25