从延迟后的方法返回一个字符串

时间:2015-06-01 19:24:19

标签: objective-c grand-central-dispatch

我试图在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;
}

1 个答案:

答案 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;
        }];
    }];
}