嗨,我使用這個library,我發現功能:void(^)(NSData *)是什麼意思?
- (void) queueRequest:(NSString*)urlPath completion:(void(^)(NSData*))completionWithDownloadedData;
我試圖通過一個簡單的NSData *data;
,它拋出一個錯誤,是什麼真正的意思(void(^)(NSData*))
?這是我第一次看到它。
非常感謝。
嗨,我使用這個library,我發現功能:void(^)(NSData *)是什麼意思?
- (void) queueRequest:(NSString*)urlPath completion:(void(^)(NSData*))completionWithDownloadedData;
我試圖通過一個簡單的NSData *data;
,它拋出一個錯誤,是什麼真正的意思(void(^)(NSData*))
?這是我第一次看到它。
非常感謝。
(void(^)(NSData*))
聲明一個代碼塊。 你可以這樣調用你的函數。
[obj queueRequest:urlPath completion:^(NSData* data){
/* some code */
}];
data
是你的塊,您可以與工作參數。該隊列將在隊列請求異步完成時調用。
這是一個接受NSData
對象的塊,因爲它只是參數,不返回任何內容。
請參閱Apple的Blocks Programming Topics。
該接口是異步的,這意味着數據將在稍後的一段時間纔可用。這意味着該方法不能簡單地返回NSData*
(一直沒有阻塞,這是不切實際的)。現在的問題通常通過blocks來解決,並且此處的完成參數是一個塊,其參數爲NSData*
並返回void
。這是你如何把這樣的方法:
[foo queueRequest:path completion:^(NSData *receivedData) {
NSLog(@"Received data: %@", receivedData);
}];
呼叫將立即返回,塊將被執行一段時間後,當數據是可用的。
感謝您的解釋! – 2013-03-07 09:33:05
感謝您的幫助! :) – 2013-03-07 09:33:39