Objective C块代码

Siv*_*der 1 objective-c

我是目标C的新手,我有以下两难困境.我希望在类预测中的方法完成运行后运行一段代码.

-(void)populate: (void (^)())completionHandler{//method that should run first
    //code that runs first
}  
Run Code Online (Sandbox Code Playgroud)

我在main函数中调用此方法

[prediction populate:^{
    NSLog(@"it works")//it works is new displayed
}];
Run Code Online (Sandbox Code Playgroud)

我希望在populate方法完成运行后立即显示"it works".但这不会发生.我究竟做错了什么?

Mik*_*e S 5

只是completionHandler在方法中添加参数不会自动运行它.当你完成populate:方法中你需要做的任何事情时,你需要自己调用它:

-(void)populate: (void (^)())completionHandler { //method that should run first
    //code that runs first

    if (completionHandler) {
        completionHandler();
    }
}
Run Code Online (Sandbox Code Playgroud)