目标c iOS中的完成处理程序

时间:2016-08-28 10:57:05

标签: ios objective-c asynchronous completion-block

我正在研究积木,使用它似乎相当令人印象深刻。但后来我才知道我们可以在函数中使用块作为变量,它的主要用途是当我们想要做一些异步工作时,我们必须执行一些操作后得到结果。

我研究了很多资源并得到了他们正在做的事情。我试图通过传递这样的字符串来做同样的事情:

在.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”作为一个字符串传递并再次获取它。

我仍然不确定那件事是如何起作用的。 是否有一个教程,可以用图纸完美地捕捉到事情的完成情况。

我已阅读了很多文章,但他们只告诉我们需要实施的方式,但不要告诉我为什么这个实现会做这些事情。 参数传递如何在名为。

的函数中进行

1 个答案:

答案 0 :(得分:0)

你可以这样做。

你可以在块中处理你的字符串并使用 myResultFunction 发回结果,在 myResultFunction 你可以做你想做的事情,但如果你想更新用户界面使用 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
    });           

}