我正在研究积木,使用它似乎相当令人印象深刻。但后来我才知道我们可以在函数中使用块作为变量,它的主要用途是当我们想要做一些异步工作时,我们必须执行一些操作后得到结果。
我研究了很多资源并得到了他们正在做的事情。我试图通过传递这样的字符串来做同样的事情:
在.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”作为一个字符串传递并再次获取它。
我仍然不确定那件事是如何起作用的。 是否有一个教程,可以用图纸完美地捕捉到事情的完成情况。
我已阅读了很多文章,但他们只告诉我们需要实施的方式,但不要告诉我为什么这个实现会做这些事情。 参数传递如何在名为。
的函数中进行答案 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
});
}