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

时间:2013-02-28 05:49:02

标签: iphone objective-c xcode ipad

是否可以仅延迟返回值,而不是像整个方法一样:

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

3 个答案:

答案 0 :(得分:10)

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

- (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  
}];

答案 1 :(得分:1)

你能做的是。将此功能保持为正常功能:

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

添加这个将返回数据的新函数:

-(CGFloat)returnData
{
       return floatvalue;
}

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

答案 2 :(得分:-1)

-(void)getValue
{
// code implementation

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

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