1

免責事項: 私は Obj-C と iOS (5、ARC 対応) はまったく初めてです。

次の NSURLConnectionDelegate メソッドの実装は、if 内の NSLog 呼び出しで EXC_BAD_ACCESS を作成します。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

    NSLog(@"Response %@", response );
    if([response isKindOfClass:[NSHTTPURLResponse class]])
    {
        NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*) response;
        NSLog(@"HTTP status code %@", [httpResponse statusCode]);
    }
}

私が見つけた限りでは、EXC_BAD_ACCESS は主に割り当ての問題、間違ったキャスト、および不適切なメモリ管理が原因で発生します。ここではそのどれも当てはまりません (願っています)。

前もって感謝します、クリス

解決策: og 文字列のフォーマットで Noobie エラーが発生しました。2 番目の NSLog を次のように変更します。

NSLog(@"HTTP status code %i", [httpResponse statusCode]);
4

1 に答える 1

3

statusCodeインスタンスへのポインターではなく、NSInteger(alongまたは) を返します。intNSObject

書式指定子%@NSObjects 引数に使用されます。この問題は、返された整数値がstatusCodeオブジェクトへのポインターとして解釈/渡された後、ランタイムによってオブジェクトへのポインターとしてメッセージ送信または処理される場合に発生する可能性があります。オブジェクトの引数が%@ロガーを介して出力されると、オブジェクトの-[NSObject description].

コンパイラの警告を表示し、生成された問題を修正することで、将来この問題を回避できます。

于 2012-01-16T13:46:33.937 に答える