如何在目标C的变量中放置一个块(关闭)?

问题描述 投票:0回答:1

[习惯了swift,我曾用parametersvariables作为闭包。我正在尝试将其转换为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");
};

所以缺少什么?

ios objective-c closures block
1个回答
0
投票

[好,所以主要的问题是completion应该在dispatch_async内部运行,这是我在swift版本中所做的,但是由于某种原因而在这里错过了。

dispatch_async(dispatch_get_main_queue(), ^(void){
            completion();
        });
© www.soinside.com 2019 - 2024. All rights reserved.