1

免責聲明:我很新的Obj-C和iOS(5,ARC啓用)。安全鑄造,但EXC_BAD_ACCESS無論如何

的NSURLConnectionDelegate方法的以下實現中的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。改變第二的NSLog到:

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

回答

3

statusCode返回NSInteger(一個longint),而不是一個指向NSObject實例。

格式說明符%@用於NSObject的參數。當從statusCode返回的整數值作爲指向對象的指針被解釋/傳遞,然後通過運行時消息傳遞或以其他方式被視爲指向對象的指針時,可能會發生此問題。當通過%@打印對象參數時,記錄器使用對象的-[NSObject description]的結果。

您可以通過打開編譯器警告並糾正它生成的問題來避免將來出現此問題。

+0

非常感謝! – Chris 2012-01-16 13:53:02

+0

@Chris沒問題! – justin 2012-01-16 13:58:19