2

iOS SDK 5を使用してアプリを開発しており、ARCを使用しようとしています。しかし、使用する必要があり、ASIHTTPRequestARCに対応していません。Appleのドキュメントによると、ARCファイルベースを使用しても問題ありません。ASIHTTPRequestだから私はすべてのファイルを。でコンパイルします-fno-objc-arc。ARCを使用しているクラスで次のコードを記述します。

NSURL *url = [[NSURL alloc] initWithString:urlStr];
ASIHTTPRequest *req = [[ASIHTTPRequest alloc] initWithURL:url];
req.delegate = self;
[req startAsynchronous];

しかし、最初の行を実行した後、URLはnilです。ARCプロジェクトで手動で管理されたコードの何が問題になっていますか?ありがとう。

4

1 に答える 1

4

URL文字列内のASCII以外の文字をすべてエスケープしましたか?そうでない場合は、URL文字列内の非ASCII文字を処理する方法がわからないため、NSURLインスタンスは作成されていません。あなたはそのようなことをする必要があるでしょう:

NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

URLWithString:また、NSURLの独自のインスタンスを作成する代わりに、次のような「自動リリースされた」NSURLインスタンスを提供するAppleのヘルパーメソッドを使用してみませんか。

NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASIHTTPRequest *req = [[ASIHTTPRequest alloc] initWithURL:url];
req.delegate = self;
[req startAsynchronous];
于 2011-09-19T12:14:27.650 に答える