2
此代碼的工作定製塊內dispatch_async
[[MyManager sharedManager] makeRequestAndParsingfor:someParameters
success:^(NSDictionary * dictionary){
// Sucessful response
NSLog(@"Success!!");
}
failure:^(NSError* error){
// Error response
NSLog(@"Failure!");
}];
但這每當我運行它從來沒有在成功或失敗塊進入的背景相同。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
[[MyManager sharedManager] makeRequestAndParsingfor:someParameters
success:^(NSDictionary * dictionary){
// Sucessful response
NSLog(@"Success!!");
}
failure:^(NSError* error){
// Error response
NSLog(@"Failure!");
}];
}];
有人可以解釋我會發生什麼嗎?方法makeRequestAndParsingfor:發出異步請求(再次使用塊),然後解析結果。我的調試器顯示它在第二種情況下從來沒有得到它自己的成功/失敗。在第一種情況下,它就像一種魅力。有任何想法嗎?
不,我不使用block_copy()。如果我在主隊列中運行相同的工作。但我不想阻止主線程。可能嗎?你能開一個聊天室嗎? –
我的理解是,蘋果(一次)使用block_copy()中的每個方法它暴露給我們的軟件開發工具包中塊參數傳遞的,但我真的不知道,如果你可以將它們分配到一個強大的變量'hold'them now(might you can)。但是,確定,打開聊天。 –
http://chat.stackoverflow.com/rooms/17256/block-inside-block –