मैंने विभिन्न दस्तावेजों को देखा है, लेकिन निम्नलिखित मामलों में पूर्णता हैंडलर को लागू करने का तरीका नहीं जानता।

//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
프로꾸 7 नवम्बर 2019, 16:49

1 उत्तर

सबसे बढ़िया उत्तर

पूरा करने के लिए कोडहैंडलर,

   - (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);
}
-1
SGDev 8 नवम्बर 2019, 05:22