1

我在 viewDidLoad 中分配了一个 NSArray (首先可以这样做,就像它是好的做法一样吗?)但是我在哪里释放它?在 ViewDidUnload、dealloc 或 didRecieveMemoryWarning 中?

(我也应该发送消息让它释放,或者将其设置为 nil,或者清空数组或组合?)

4

3 回答 3

1

您应该将 NSArray 分配给 的保留属性self,并在 viewDidLoad 中(自动)释放它。然后在dealloc. 在此设置中,当 viewDidLoad 被调用时,它会释放“当前”NSArray(如果有)。

但是,如果可能的话,听起来您最好将 NSArray 分配到其中一个init函数中。

于 2010-08-05T22:52:55.913 回答
0

您可以在 viewDidLoad 中进行分配,当它被释放时它会在每个项目上调用 release(当您添加它们时它会调用 retain,因此请确保在需要时释放)。

如果你不需要它,你应该尽快释放它。如果您想保留它(因为它是一个缓存),那么您可以在所有三种情况下释放它,但不要多次释放它。

于 2010-08-05T22:45:05.330 回答
0

要释放对象,请发送释放消息:

[myObject release];

请参阅dealloc 中的属性:释放然后设置为零?或简单地发布以获取更多详细信息。

不必清空数组。当数组上的引用计数降至零时,它将调用其所有对象的 [object release]。

于 2010-08-05T22:49:55.610 回答