[英]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.