断点为"警告:尝试在*上显示*已经呈现*"

时间:2016-08-31 09:41:35

标签: ios objective-c swift uiviewcontroller breakpoints

有时会发生 - 从代码的不同位置 - 我们想要UIViewController.presentViewController(a, b, c),有时会发生我们已经提出的情况,在这种情况下我们会得到:

Warning: Attempt to present * on * which is already presenting *

是否可以打破此警告?如何为此设置断点?

1 个答案:

答案 0 :(得分:10)

首先,您需要将符号断点设置为-[UIViewController presentViewController:animated:completion:]。您可以通过Xcode的Add Symbolic Breakpoint功能轻松添加此功能。

其次,您需要设置一个条件,以便仅在视图控制器已经呈现某些内容时才会触发断点。以编程方式,这意味着presentedViewController属性是非零的。这里的技巧是访问传递给任何方法调用的self隐式参数,这可以使用$arg1完成(有关here的更多详细信息)。一旦你有了这个,其余的很容易。

以下是断点的外观:

Breakpoint

总结:

符号:-[UIViewController presentViewController:animated:completion:]
条件:[(UIViewController *)$arg1 presentedViewController] != nil