UIViewController 方法实现的 'completion' 参数类型的 void (^)(void)
语法:
- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion
激起了我的好奇心,但我一直找不到它的任何文档。请有人帮忙解释一下它的用途/含义吗?
非常感谢。
最佳答案
这是我书中关于 block 的讨论:
http://www.apeth.com/iOSBook/ch03.html#_blocks
那里有一个例子,但这里有一个更接近你所问问题的例子:
[self transitionFromViewController:fromvc
toViewController:tovc
duration:0.4
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:nil
completion:^(BOOL done){
[tovc didMoveToParentViewController:self];
[fromvc removeFromParentViewController];
}];
完成 block 有一个参数,一个名为“done”的 bool 值,但它的代码不使用这个参数。这个想法是执行动画,然后运行完成 block 中的代码。
适应积木非常重要,因为它们是 future 的方式。例如,iOS 4 中的 View 动画使用它们,如我的书的“基于 block 的 View 动画”部分所述(首先阅读旧方法,然后阅读新的 iOS 4 方法):
http://www.apeth.com/iOSBook/ch17.html#_view_animation
在 iOS 5 中 block 更加重要;它们不是可选的情况越来越多。
block 也是使用 GCD(grand central dispatch)的方式,这无疑是执行多线程的最佳方式。
关于objective-c - UIViewController dismissViewControllerAnimated 完成参数类型语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8021593/