如何使用Objective-C

时间:2019-11-07 13:49:30

标签: ios objective-c xcode

我浏览了各种文档,但是在以下情况下不知道如何应用完成处理程序。

//example function.
//default textView height 100.0f

-(void)getHeightResult{
  [self initHeight];
  NSLog(@"%@", [self setTextManager]);
}

-(NSString *)setTextManager{
   if(self.textView.frame.size.heigh != 100){
      return @"new Height";
   } else{
      return @"Default Height;
   }
}

-(void)initHeight{
   int result;
   for(int i = 0 ; i <= 20: i ++){
     result = result + i;
   }
   //result = 210
   self.textView.frame.size.height = result;
}

执行上述功能时,getHeightResult始终输出“默认高度”。 我该如何应用完成处理程序以将其作为initHeight中计算出的值从诸如此类的源中返回?

我们要求您提供答案以帮助您了解完成处理程序,而不是询问实际来源。

1 个答案:

答案 0 :(得分:-1)

completionHandler的代码,

   - (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self getSize:^(bool status) {
        if (status == true) {
            // perofm your operioan
            NSLog(@"Done");
        }
    }];
}

typedef void (^CompletionBlock)(_Bool status);

-(void)getSize:(CompletionBlock)block{
    __block int count = 0;

    [self initWidth:^(bool status) {
        count++;
        if (count == 2) {
            block(true);
        }
    }];

    [self initHeight:^(bool status) {
        count++;
        if (count == 2) {
            block(true);
        }
    }];
}


-(void)initHeight:(CompletionBlock)block{
    int result;
    for(int i = 0 ; i <= 100; i ++) {
        result = result + i;
    }
    block(true);
}

-(void)initWidth:(CompletionBlock)block{
    int result;
    for(int i = 0 ; i <= 20; i ++){
        result = result + i;
    }
    block(true);
}