[习惯了swift
,我曾用parameters
和variables
作为闭包。我正在尝试将其转换为objective-C
。我设法创建了一个简单的block
,如下所示:
-(void)myFunc:(void(^)(void))callback {
callback();
}
并且来自viewDidLoad()
[self myFunc:^{
NSLog(@"🦋MyCallBack");
}];
现在我想将block
放在variable
中。在swift
中,应该是这样的:
定义variable
var completionHandler: (() -> ())?
将其用作function
中的完成内容:
DispatchQueue.main.async {
self.completionHandler?()
}
和实际的callback
completionHandler = {
//DOSTUFF
}
这将如何转换为objective-c
?
类似...的声明
void (^completion)(void);
使用(这似乎不正确。我得到一条警告,指出它未被使用)
completion;
和callback
completion = ^void(void){
NSLog(@"😁YAY");
};
所以缺少什么?
[好,所以主要的问题是completion
应该在dispatch_async
内部运行,这是我在swift
版本中所做的,但是由于某种原因而在这里错过了。
dispatch_async(dispatch_get_main_queue(), ^(void){
completion();
});