安全なキャスティングですが、とにかくexc_bad_access
-
28-10-2019 - |
質問
免責事項:私は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]);
解決
statusCode
andを返します NSInteger
(a long
または int
)、anへのポインターではありません NSObject
実例。
フォーマット仕様 %@
に使用されます NSObject
s引数。問題は、から返される整数値が statusCode
オブジェクトへのポインターとして解釈/渡され、実行時までにオブジェクトへのポインターとしてメッセージを送信または扱われます。オブジェクト引数が介して印刷されている場合 %@
ロガーはオブジェクトの結果を使用します -[NSObject description]
.
コンパイラ警告を上げて、それが生成する問題を修正することにより、将来この問題を回避できます。
所属していません StackOverflow