Cocoa touch 使用dismissViewController时有什么区别?

Cocoa touch 使用dismissViewController时有什么区别?,cocoa-touch,uiviewcontroller,Cocoa Touch,Uiviewcontroller,A:ChildViewController: [[self presentingViewController] dismissViewControllerAnimated:YES completion:nil]; [self dismissViewControllerAnimated:YES completion:nil]; B:ParentViewController: [[self presentingViewController] dismissViewControllerAnimat

A:ChildViewController:

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];
B:ParentViewController:

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];

A和B之间的区别是什么?

dismissModalViewControllerAnimated:是一种不推荐使用的API,在转向更基于块的API之前,Apple就已经公开了它。与Vizlix不同的是,我要说,
dismissModalViewControllerAnimated:
永远不应该被使用。苹果不再维护它,或者至少不正确,因为使用它会有一些特殊的副作用,当使用
presentViewController:animated:completion:
dismissViewControllerAnimated:completion:
时,这些副作用就会消失。旧API应仅用于仅针对旧iOS版本的特定代码路径。我提到的副作用至少来自于iOS6


最重要的是,基于块的API提供了旧式API不可能实现的功能(例如,push中直接缺少的功能;pop API)。想象一下需要创建一系列视图控制器事件。在不知道动画何时完成的情况下,由于在另一个动画正在进行时执行动画,很可能会遇到错误。使用基于块的API,您可以更轻松地链接此类事件。

dismissModalViewControllerAnimated:
是一种不推荐使用的API,在转向更基于块的API之前,Apple已公开了该API。与Vizlix不同的是,我要说,
dismissModalViewControllerAnimated:
永远不应该被使用。苹果不再维护它,或者至少不正确,因为使用它会有一些特殊的副作用,当使用
presentViewController:animated:completion:
dismissViewControllerAnimated:completion:
时,这些副作用就会消失。旧API应仅用于仅针对旧iOS版本的特定代码路径。我提到的副作用至少来自于iOS6


最重要的是,基于块的API提供了旧式API不可能实现的功能(例如,push中直接缺少的功能;pop API)。想象一下需要创建一系列视图控制器事件。在不知道动画何时完成的情况下,由于在另一个动画正在进行时执行动画,很可能会遇到错误。使用基于块的API,您可以更轻松地链接此类事件。

首先将您的答案与jxdwinter的要求相匹配!!他并不是在问什么是不推荐的,以及什么旧API作为代码结构在维护。他刚才问了区别?甚至每个人都知道[self.parentViewController dismissModalViewControllerAnimated:YES]不受欢迎。lolz;-)首先将您的答案与jxdwinter的要求相匹配!!他并不是在问什么是不推荐的,以及什么旧API作为代码结构在维护。他刚才问了区别?甚至每个人都知道[self.parentViewController dismissModalViewControllerAnimated:YES]不受欢迎。lolz;-)