您好我正在使用此library,我找到了函数:
- (void) queueRequest:(NSString*)urlPath completion:(void(^)(NSData*))completionWithDownloadedData;
我尝试传递一个简单的NSData *data;
并抛出错误,真正意味着(void(^)(NSData*))
?这是我第一次看到它。
非常感谢。
答案 0 :(得分:11)
(void(^)(NSData*))
声明代码块。
你可以这样调用你的功能。
[obj queueRequest:urlPath completion:^(NSData* data){
/* some code */
}];
data
是您的块的参数,您可以使用它。当queueRequest以异步方式完成时,将调用该块。
答案 1 :(得分:4)
接口是异步的,这意味着数据将在以后的某个时间可用。这意味着该方法不能简单地返回NSData*
(不会一直阻塞,这是不切实际的)。现在问题经常用blocks来解决,这里的完成参数是一个带有NSData*
参数并返回void
的块。这就是你如何称呼这种方法:
[foo queueRequest:path completion:^(NSData *receivedData) {
NSLog(@"Received data: %@", receivedData);
}];
调用将立即返回,并且当数据可用时,块将在稍后执行。
答案 2 :(得分:1)
它是一个接受NSData
对象的块,因为它是唯一的参数并且不返回任何内容。
请参阅Apple的Blocks Programming Topics。