1

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

我查看了很多资源并了解了他们在做什么。我试图通过传递这样的字符串来做同样的事情:

将块定义为 .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”作为字符串传递并再次获取它。

我仍然不确定 while 事情是如何工作的。有没有一个教程可以用图纸完美地捕捉到事情是如何完成的。

我已经阅读了很多文章,但它们只告诉我们它需要实现的方式,而不是告诉我们为什么这个实现会做这些事情。此外,在名为 .

4

1 回答 1

0

你可以做这样的事情。

您可以在块中处理您的字符串并使用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
    });           

}
于 2016-08-28T11:54:01.420 回答