Как сделать пользовательский обработчик завершения с Objective-C - PullRequest
1 голос
/ 07 ноября 2019

Я просматривал различные документы, но не знаю, как применить обработчик завершения в следующих случаях.

//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 голосов
/ 07 ноября 2019

Код для завершенияHandler,

   - (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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...