簡體   English   中英

目標c iOS中的完成處理程序

[英]completion handlers in objective c iOS

我正在研究積木,使用它似乎相當令人印象深刻。 但后來我才知道我們可以在函數中使用塊作為變量,它的主要用途是當我們想要做一些異步工作時,我們必須執行一些操作后獲得結果。

我查看了很多資源並得到了他們正在做的事情。 我嘗試通過這樣傳遞字符串來做同樣的事情:

將塊定義為.h文件中的參數

typedef void(^sudBlock)(NSString * myname);

- (void)blockAsLastParam:(NSString*)name completion:(sudBlock)blockName;

在.m文件中將塊實現為參數

-(void) blockAsLastParam:(NSString *)name completion:(sudBlock)blockName{
    blockName(name);
}


[self blockAsLastParam:@"sudh" completion:^(NSString *myname) {
        NSLog(@"This is block %@",myname);
    }];

所以在這里我將“sudh”作為一個字符串傳遞並再次獲得它。

我仍然不確定時間是如何運作的。 是否有一個教程,其中完成了如何完成工作完成圖紙。

我已經閱讀了很多文章,但它們只告訴我們需要實現它的方式,但不要告訴我為什么這個實現會做這些事情。 參數傳遞如何在被調用的函數中進行。

你可以做這樣的事情。

你可以在塊中處理你的字符串並使用myResultFunction發回結果,在myResultFunction中你可以做任何你想做的事情,但如果你想更新UI使用dispatch_get_main_queue ,如下例所示,

[self blockAsLastParam:@"sudh" completion:^(NSString *myname) {

     NSString *processedString = @"";

     //Do your processing here your own logic
     [self myResultFunction:processedString];

}];

-(void)myResultFunction:(NSString*)porcessedString{
          //do anything with your String

         //UpDate UI
         dispatch_async(dispatch_get_main_queue(), ^{
        //write logic here for updating UI like updating textfield or label
    });           

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM