Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UIViewController dismissViewControllerAnimated完成参数类型语法_Objective C_Uiviewcontroller_Ios5 - Fatal编程技术网

Objective c UIViewController dismissViewControllerAnimated完成参数类型语法

Objective c UIViewController dismissViewControllerAnimated完成参数类型语法,objective-c,uiviewcontroller,ios5,Objective C,Uiviewcontroller,Ios5,UIViewController方法实现的“completion”参数类型的void(^)(void)语法: - (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion 引起了我的好奇心,我一直找不到任何相关文件。有人能解释一下它的目的/意义吗 非常感谢。这将是一个完成块。块是一段代码,可以作为参数提交给API(这里经常看到,用于完成处理)。块有许多特性,包括引用内存和维护状态

UIViewController方法实现的“completion”参数类型的
void(^)(void)
语法:

- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion
引起了我的好奇心,我一直找不到任何相关文件。有人能解释一下它的目的/意义吗


非常感谢。

这将是一个完成块。块是一段代码,可以作为参数提交给API(这里经常看到,用于完成处理)。块有许多特性,包括引用内存和维护状态的能力

请参阅有关Obj-C这一日益流行的功能的文档:


块提供了可能被认为是回调行为的东西(通常通过委托或通知实现),但它们允许程序员在与启动操作相同的上下文中包含完成行为的逻辑,使代码更具表现力,并简洁地传达预期行为的完整过程

以下是我书中关于积木的讨论:

这里有一个例子,但这里有一个例子更接近你要问的事情:

[self transitionFromViewController:fromvc
                  toViewController:tovc
                          duration:0.4
                           options:UIViewAnimationOptionTransitionFlipFromLeft
                        animations:nil
                        completion:^(BOOL done){
                            [tovc didMoveToParentViewController:self];
                            [fromvc removeFromParentViewController];
                        }];
完成块接受一个参数,一个名为“done”的BOOL,但它的代码不使用这个参数。其思想是执行动画,然后运行完成块中的代码

使用积木很重要,因为它们是未来的发展方向。例如,iOS 4中的视图动画使用它们,如我的书中的“基于块的视图动画”部分所述(首先阅读关于旧方式的内容,然后阅读关于新iOS 4方式的内容):

在iOS 5中,块更为重要;越来越多的情况下,它们不是可选的


另外,块是使用GCD(grand central dispatch)的方法,这是执行多线程的最佳方法。

您可能需要补充的是,它对于执行任何清理或启动需要在解聘后执行的其他操作非常有用。通常用来代替delegat回调谢谢你,isaac,我在介绍块时简单地读了一下,但愚蠢地没有研究语法@提姆图尔曼是个好建议。我扩展了答案,将其与cocoa中其他常见的完成处理机制进行了比较。谢谢matt,这看起来像是你写的一本很棒的书,有没有关于iOS 5版本的计划@埃迪:我已经开始将所有可下载的示例转换为iOS 5:更多信息如下。。。