0

我正在尝试执行异步 URL 请求:

    NSURLRequest* request=[NSURLRequest requestWithURL: [NSURL URLWithString: @"http://www.youtube.com/"]];
    NSOperation* operation=[NSOperation new];
    NSOperationQueue* queue=[NSOperationQueue new];
    [operation setCompletionBlock: ^()
     {
     }];
    [queue addOperation: operation];
    [NSURLConnection sendAsynchronousRequest: request queue: queue completionHandler: ^(NSURLResponse* response, NSData* data, NSError* error)
    {
        NSLog(@"%@",[data bytes]);
    }];

所以我只需要 URL 中包含的数据。但是几秒钟后(可能是在新创建的线程加载数据的时候)应用程序崩溃了:

thread 6 : EXC_BAD_ACCESS (code=13, address=0x0)

当我尝试打印数据字节时,确切的点是 NSLog 行中的 objc_msgSend_vtable5。PS:我正在使用ARC。

4

1 回答 1

3

问题是该方法-[NSData bytes]具有返回类型void *(并且是指向原始字节缓冲区的指针),但是您通过尝试使用%@ 格式说明符记录返回值将其视为对象。要解决这个问题,只需打印 printdata而不是[data bytes]; 更换你的线路

NSLog(@"%@", [data bytes]);

NSLog(@"%@", data);
于 2012-11-08T00:27:44.277 回答