延迟的返回值,而不是整个方法

延迟的返回值,而不是整个方法

问题描述:

是否有可能延迟仅返回值,而不是整个方法,如:延迟的返回值,而不是整个方法

-(CGFloat)getValue 
{ 
    // code implementation 
    return floatvalue; // return float value with some delay. 
} 
+0

请问这有什么区别?如果是这样,那么你可以使用睡眠(10);如果UIHang不是一个问题。 – rptwsthi 2013-02-28 05:51:37

+0

是的,它会根据我的需要 – KDeogharkar 2013-02-28 05:52:14

+0

yup只是使用'sleep(_timeInterval);'来延迟返回语句。我也想知道需要实现这样的代码是什么? – Sagrian 2013-02-28 05:56:08

使用块以延迟返回值的回调;

- (void)ayncGetValue:(void(^)(id value))returnBlock { 

    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 10.f * NSEC_PER_SEC); // delay 10 seconds 
    dispatch_after(popTime, dispatch_get_main_queue(), ^{ 
    returnBlock(@"hello block"); 
    }); 
} 
// Usage 
[obj ayncGetValue:^(id value) { 
    // continue 
}]; 
+0

WOW .... !!!! +1。 – Rushi 2013-02-28 06:05:27

+0

谢谢@Fourj这很有帮助 – KDeogharkar 2013-02-28 06:06:29

+0

+1为好的答案,很好解决。 – 2013-02-28 06:57:01

你可以做的是。保持这个功能正常功能:

-(void)getValue 
{ 
     // code implementation 
     [self performSelector:@selector(returnData) withObject:nil afterDelay:0.5]; 
} 

添加新的功能,这将返回数据:

-(CGFloat)returnData 
{ 
     return floatvalue; 
} 

这里唯一重要的事情将是你必须声明的floatValue变量,类杠杆,而不是功能杠杆。

-(void)getValue 
{ 
// code implementation 

    [self performSelector:@selector(getValue:) withObject:value afterDelay:2]; 
} 

-(CGFloat)getValue:(CGFloat *)float1 
{ 
    return float1; 
}