我试图在10秒延迟后从方法返回一个字符串。延迟是因为在返回字符串之前需要进行一些处理。这是我到目前为止所得到的:
问题是字符串会立即返回。有什么建议?谢谢!
-(void)getSomethingInTenSecondsCompletion:(void(^)(NSString *result))aCompletion {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10.f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
aCompletion(@"Got Something");
});
}
-(NSString *)getSomethingInTenSeconds {
__block NSString *result;
[self getSomethingInTenSecondsCompletion:^(NSString *result) {
NSLog(@"RESULT: %@", result);
}];
return result;
}
答案 0 :(得分:3)
你的-(void)getSomethingInTenSecondsCompletion:
已经这样做了,但你不能使用这样的回报。
您将在-(void)getSomethingInTenSecondsCompletion:
使用的地方使用-(NSString *)getSomethingInTenSeconds
,并在完成时使用逻辑来处理字符串:
- (void)someMethod {
//some code
[self getSomethingInTenSecondsCompletion:^(NSString *result) {
//do something with the result string,
//for example, updating the UI
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
self.textView.text = result;
}];
}];
}