我猜我的语法已关闭,但我似乎无法弄清楚这一点,因为我是块新手。我有这个自定义方法:
-(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;
说,“表达结果未使用”。
感谢您的光临。
答案 0 :(得分:3)
应该用parens调用块:
} completion:^(BOOL finished){
completionHandler();
}];