我在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