嗨,我使用这个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