我是否需要在异步函数中释放参数?

时间:2013-01-10 07:21:18

标签: ios objective-c memory-management function-parameter

我为此搜索了很多内容,但对此毫无头绪。

首先,我没有使用ARC。

假设我正在调用异步函数,并将指针A传递给它,最初我想,好吧,让我们将自动释放的指针A传递给它,异步函数将在完成其操作后释放A.但似乎不起作用。

NSURLRequest *request = [[[NSURLRequest requestWithURL:[NSURL URLWithString:@"someurl"]] autorelease];
[webView loadRequest:request];

然后出现EXC_BAD_ACCESS错误,如果我删除了自动释放,那么就可以了。

谁知道这个?

1 个答案:

答案 0 :(得分:1)

请再次阅读basic memory management rules

你没有使用包含单词“alloc”,“new”,“copy”或“mutableCopy”的方法创建NSURLRequest,所以你不拥有它,所以你不应该释放它。

此外,您不是“调用异步函数”。当您调用[webView loadRequest:]时,方法调用会立即同步发生。该方法在后台启动一些异步工作,稍后完成 - 但这不会影响您首先调用该方法的方式,也不会影响其参数的内存管理。