提问人:screenMonkey MonkeyMan 提问时间:1/28/2020 最后编辑:CœurscreenMonkey MonkeyMan 更新时间:2/10/2020 访问量:400
如何在 Objective-C 中的变量中放置块(闭包)?
How do a put a block (closure) in a variable in Objective-C?
问:
习惯了 Swift,我已经处理过一些闭包。我现在正在尝试将其转换为 Objective-C。我设法创建了一个简单的,如下所示:parameters
variables
block
-(void)myFunc:(void(^)(void))callback {
callback();
}
从viewDidLoad()
[self myFunc:^{
NSLog(@"🦋MyCallBack");
}];
现在我想把 .在 Swift 中,它会是这样的:block
variable
定义variable
var completionHandler: (() -> ())?
在 A 或其他任何内容中将其用作补全:function
DispatchQueue.main.async {
self.completionHandler?()
}
而实际上callback
completionHandler = {
//DOSTUFF
}
这将如何转化为 Objective-C?
比如...声明
void (^completion)(void);
使用(这似乎不对。我收到一条警告,指出它未使用)
completion;
和callback
completion = ^void(void){
NSLog(@"😁YAY");
};
那么还缺少什么呢?
答:
-2赞
screenMonkey MonkeyMan
1/28/2020
#1
好的,所以主要问题是它应该在里面运行,我在我的版本上做了一些事情,但由于某种原因错过了这里。completion
dispatch_async
swift
dispatch_async(dispatch_get_main_queue(), ^(void){
completion();
});
上一个:目标 C 中的函数指针
评论