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 错误。将第二个 NSLog 更改为:

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

1 回答 1

3

statusCode返回一个NSInteger(along或 an int),而不是指向NSObject实例的指针。

格式说明符%@用于NSObjects 参数。当返回的整数值statusCode被解释/传递为指向对象的指针,然后被运行时发送消息或以其他方式视为指向对象的指针时,可能会出现问题。当通过%@记录器打印对象参数时,使用对象的-[NSObject description].

您可以通过打开编译器警告并更正它产生的问题来避免这个问题。

于 2012-01-16T13:46:33.937 回答