Sac*_*jay 6 objective-c grand-central-dispatch ios4 ios objective-c-blocks
如何在GCD块中指定返回类型?在这里,我想将结果作为NSData...
- (NSData *)returnData:(NSString *)urlString{
dispatch_queue_t concurrentQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_sync(concurrentQueue, ^{ // here return type showing error
NSString *strUrl = urlString;
if([strUrl length] == 0)
return nil; // from this point i want to stop the execution of the block and return nil .
// otherwise only continue the left operations
});
}
Run Code Online (Sandbox Code Playgroud)
- (NSData *)returnData:(NSString *)urlString {
dispatch_queue_t concurrentQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
// Declare your local data outside the block.
// `__block` specifies that the variable can be modified from within the block.
__block NSData *localData = nil;
dispatch_sync(concurrentQueue, ^{
// Do something with `localData`...
localData = somethingWonderful;
});
// `localData` now contains your wonderful data.
return localData;
}
Run Code Online (Sandbox Code Playgroud)
块的格式(参数/返回类型)在函数的签名中指定.在这种情况下,dispatch_sync使用没有返回类型且没有参数的块.如果您想要使用更多变量,则需要在块外部声明它们,如上面的代码所示.
| 归档时间: |
|
| 查看次数: |
5768 次 |
| 最近记录: |