0

我的应用程序的方法中有以下代码:

NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];

[someObject someMethodThatTakesAnArray:array];

我知道 arrayWithObjects 方法返回一个自动释放的数组。这是否意味着我应该在制作后直接保留它?是否保证在我将数组传递给 someMethodThatTakesAnArray 之前不会耗尽自动释放池?当它进入方法时呢?如果我从不保留它,那么当我在 someMethodThatTakesAnArray 中使用它时,该数组可能会消失,不是吗?

4

2 回答 2

3

直到它所服务的线程的事件循环的下一次传递,自动释放池才会被耗尽。只要您在当前方法中工作,就不会发生这种情况。所以是的,数组对于 someMethodThatTakesAnArray: 使用是安全的;你不用担心。

事件管理:http: //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/Introduction/Introduction.html

内存管理:http: //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html

于 2011-07-18T14:24:47.153 回答
1

在您的方法返回之前,自动释放池没有机会耗尽。你在这里做的很好,如果你对这个数组没有其他需要,只是把它传递给-someMethodThatTakesAnArray:

于 2011-07-18T14:23:56.460 回答