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

sma*_*8dd 7 breakpoints objective-c uiviewcontroller ios swift

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

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

有可能打破这个警告吗?我该如何为此设置断点?

Cri*_*tik 11

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

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

以下是断点的外观:

断点

综上所述:

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