阻止不从方法调用

时间:2013-02-05 22:35:53

标签: ios block

我猜我的语法已关闭,但我似乎无法弄清楚这一点,因为我是块新手。我有这个自定义方法:

-(void)animateViewConstraintChange: (void(^)(void))completionHandler;

这个方法看起来像这样:

-(void)animateViewConstraintChange:(void(^)(void))completionHandler
{
    [[self view]setNeedsUpdateConstraints];
    [UIView animateWithDuration:0.6
                 animations:^{
                 [[self view]layoutIfNeeded];
                 } completion:^(BOOL finished){
                     completionHandler;
                 }];

}

它编译并运行,但是当我调用此方法并实际为forHandler输入内容时,该代码不会被调用。

[self animateViewConstraintChange:^{
    [orderedViewControllers removeObject:[self middleViewController]];
    [[[self middleViewController] view] removeFromSuperview];

    [[self middleViewController] removeFromParentViewController];

    _middleViewController = nil;

    [[self view]setNeedsUpdateConstraints];
}];    

因此,在上面的代码中,调用了animateViewConstraintChange,但是块中的代码却没有。

此外,编译器在

的animateViewConstraintChange方法中给出了一个错误
completionHandler;

说,“表达结果未使用”。

感谢您的光临。

1 个答案:

答案 0 :(得分:3)

应该用parens调用块:

} completion:^(BOOL finished){
                 completionHandler();
         }];