0

私はこれについて多くのことをグーグルで調べましたが、手がかりがありません。

まず、私はARCを使用していません。

非同期関数を呼び出して、ポインター A をそれに渡すとしましょう。最初は、自動解放されたポインター A をそれに渡しましょう。非同期関数は、操作が終了した後に A を解放します。しかし、うまくいかないようです。

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

次に、EXC_BAD_ACCESS エラーが発生します。自動解放を削除すると、問題なく動作します。

誰もこれについて知っていますか?

4

1 に答える 1

1

基本的なメモリ管理ルールをもう一度お読みください。

「alloc」、「new」、「copy」、または「mutableCopy」という単語を含むメソッドを使用して作成しなかったため、NSURLRequest所有していないため、リリースしないでください。

また、「非同期関数を呼び出す」のではありません。を呼び出す[webView loadRequest:]と、メソッド呼び出しが即座に同期して行われます。このメソッドは、舞台裏で非同期作業を開始します。これは後で完了しますが、そもそもメソッドを呼び出す方法や、引数のメモリ管理には影響しません。

于 2013-01-10T07:29:59.327 に答える