0

私は次のようなNSMutableURLRequestを作成しようとしています:

NSURL *URLWithString = [
    NSString stringWithFormat:@"%@?%@",
    urlString,
    datas
];
NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] initWithURL:URLWithString] autorelease];

iPhone 4Sで実行すると、アプリがクラッシュし、次の例外が発生します。

2012-10-30 15:58:53.495 [429:907]-[__ NSCFString AbsoluteURL]:認識されないセレクターがインスタンス0x1cd74a90に送信されました

2012-10-30 15:58:53.497 [429:907]---キャッチされなかった例外によるアプリの終了'NSInvalidArgumentException'、理由:'-[__ NSCFString AbsoluteURL]:認識されないセレクターがインスタンス0x1cd74a90に送信されました

---最初のスローコールスタック:

(0x361b62a3 0x344c697f 0x361b9e07 0x361b8531 0x3610ff68 0x3611363f 0x320396e7 0x32039551 0x320394ed 0x33bde661 0x33bde597 0x387e1 0x189d9f1f 0x376da9a9 0x341c535d 0x376

libc ++ abi.dylib:例外をスローして終了します

どうしたの?

4

2 に答える 2

7

多くの問題: まず、NSString および NSURL メソッドを呼び出す方法を調べてください。貼り付けたコードに対して実行しました。

NSURL * myUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@?%@",urlString,datas]];

NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] initWithURL:myUrl] autorelease];
于 2012-10-30T15:13:28.467 に答える
2

NSURL 作成コードが間違っています。

NSURL *URLWithString = [NSString stringWithFormat: @"%@?%@", urlString, datas];

ここでは、 NSString クラスのメソッド ( stringWithFormat)を使用して NSURL を直接作成しようとしています。その結果、変数URLWithStringが間違った型になり、NSURL メッセージを送信すると、今のようなクラッシュが発生します。

これを修正するには、最初に URL アドレスの NSString を作成し、それを使用して NSURL をインスタンス化する必要があります。

NSString *completeURLString = [NSString stringWithFormat:@"%@?%@", urlString, datas];
NSURL *completeURL = [NSURL URLWithString: completeURLString];

(技術的には、これら 2 つの行を組み合わせることができます。何が起こっているのかを明確にするために、これらを分離しています。)

また、おそらくクラッシュとは関係ありませんが、URL variable を呼び出すべきではありません。これは NSURL のクラス メソッドのURLWithString名前であるためです。一意の名前を付け、小文字で始めるようにしてください (少なくとも、これにより、他の人がコードを解読しやすくなります)。

于 2012-10-30T15:26:10.963 に答える