延迟的返回值,而不是整个方法
是否有可能延迟仅返回值,而不是整个方法,如:延迟的返回值,而不是整个方法
-(CGFloat)getValue
{
// code implementation
return floatvalue; // return float value with some delay.
}
使用块以延迟返回值的回调;
- (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
}];
WOW .... !!!! +1。 – Rushi 2013-02-28 06:05:27
谢谢@Fourj这很有帮助 – KDeogharkar 2013-02-28 06:06:29
+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;
}
请问这有什么区别?如果是这样,那么你可以使用睡眠(10);如果UIHang不是一个问题。 – rptwsthi 2013-02-28 05:51:37
是的,它会根据我的需要 – KDeogharkar 2013-02-28 05:52:14
yup只是使用'sleep(_timeInterval);'来延迟返回语句。我也想知道需要实现这样的代码是什么? – Sagrian 2013-02-28 05:56:08