0

我为此搜索了很多,但对此一无所知。

首先,我没有使用ARC。

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

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

然后有一个 EXC_BAD_ACCESS 错误进来,如果我删除自动释放,那么它就很好。

有人知道吗?

4

1 回答 1

1

请再次阅读基本的内存管理规则

您没有NSURLRequest使用包含“alloc”、“new”、“copy”或“mutableCopy”等词的方法创建它,因此您不拥有它,因此您不应该释放它。

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

于 2013-01-10T07:29:59.327 回答