objective-c - 使用 NSURLConnection sendAsynchronousRequest

标签 objective-c asynchronous nsurlrequest

我有一个 Xcode 4.5.2 中的应用程序。它发送 URL 请求来下载图像并将图像设置在 ImageView 中。我有以下代码可以很好地完成此任务:

dispatch_queue_t downloadQueue = dispatch_queue_create("Get Facebook Friend", NULL);
    dispatch_async(downloadQueue, ^{

self.firstFriendImage = [UIImage imageWithData:
                           [NSData dataWithContentsOfURL:
                            [NSURL URLWithString:
                             [[self.facebookPhotosAll objectAtIndex:self.randomIndex1]
                              objectForKey:@"pic_big"]]]];

dispatch_async(dispatch_get_main_queue(), ^{
            [self postDownloadTasks:self.topView setLabel:self.firstFriendLabel 
withFriendName:self.firstFriendName cropImage:self.firstFriendImage 
inImageView:self.friendOneView atYPoint:22];
  });
      });

因此,虽然这段代码工作得很好,但作为 Objective C 的新手,我正在尝试稍微探索一下该语言,看看我还能如何做同样的事情。所以我尝试使用 NSURLConnection sendAsynchronousRequest: 方法(在查看了此处的一些示例之后),但我似乎无法让此方法起作用。这就是我所做的:

 NSOperationQueue *queue = [[NSOperationQueue alloc]init];
NSString *string = [[self.facebookPhotosAll  
                   objectAtIndex:self.randomIndex1]objectForKey:@"pic_big"];

    [NSURLConnection sendAsynchronousRequest: [NSURL URLWithString:   
           string] queue:queue   
             completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
        // Make sure eveything is ok
        if(error){
            // do something
        }

        self.firstFriendImage = [UIImage imageWithData:data];
         dispatch_async(dispatch_get_main_queue(), ^{

            [self postDownloadTasks:self.topView setLabel:self.firstFriendLabel 
withFriendName:self.firstFriendName cropImage:self.firstFriendImage  
inImageView:self.friendOneView atYPoint:22];

         });

    }];

所以这段代码根本不起作用(它不返回任何数据)。调用该方法时应用程序崩溃,并且收到以下消息:

** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[NSURL _CFURLRequest]:发送到实例 0xa39dd20 的无法识别的选择器”

谁能告诉我如何使用 NSURLConnection sendAsynchronousRequest 方法完成我在第一个代码摘录中所做的事情?

最佳答案

在发送异步请求方法中,您的 URL 字符串缺少一部分。它应该像你第一个有效的方法一样:

[[self.facebookPhotosAll objectAtIndex:self.randomIndex1] objectForKey:@"pic_big"]

关于objective-c - 使用 NSURLConnection sendAsynchronousRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837183/

相关文章:

ios - NSMutableURLRequest 设置授权头

ios - 为什么我的 segue 没有被执行?

ios - 在不使用 GLKIT 的情况下创建(从头开始)iOS 7.0 OpenGL ES 2.0 应用程序时出现问题

asynchronous - 没有 Ember 数据的 AJAX promise

javascript - 在 chrome.runtime 消息系统中使用 promises

iphone - NSMutableURLRequest 继承另一个 NSMutableURLRequest 的成功

iphone - UILabel 未更新与 IBOutlet 连接

objective-c - Objective C 中的网页抓取

asynchronous - 异步/等待模式和延续之间的关系是什么?

ios - 似乎无法通过 NSURLConnection 从 POST 获得响应