我在Xcode 4.5.2中有一个应用程序。它发送一个URL请求来下载图像并将图像设置在图像视图中。我有以下的代码工作正常做到这一点:使用NSURLConnection sendAsynchronousRequest
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];
});
});
所以,虽然这个代码工作正常,正在新的客观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方法完成我在第一个代码片段中所做的操作吗?
,我不认为这是你的问题,但它是您提供的队列中运行,完成块(不要求) - 如果你使用[NSOperationQueue mainQueue],那么你不需要那里的dispatch_async的东西。 – rdelmar 2013-02-12 16:48:46
什么说NSError对象?在你的if语句中只是一个推荐。你有没有用NSLog()做过测试? – 2013-02-12 16:44:56
它甚至不足以创建错误,只要该方法被调用程序崩溃与以下内容: - [__ NSDictionaryI长度]:无法识别的选择器发送到实例0xa2da000 ...由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [__ NSDictionaryI长度]:无法识别的选择发送到实例0xa2da000' – jac300 2013-02-12 16:49:25