这是我遇到的一个非常有趣的问题。我的应用程序与presentViewController:animated:completion:
和有问题dismissViewControllerAnimated:completion:
。发生的事情是 presentViewController 被调用,并且根据服务器信息,视图控制器可能会被关闭。我会收到一条错误消息,说“在完全呈现之前无法关闭”(动画设置为是)。
我实现了一个队列来处理当前和关闭呼叫。这很完美,我对这个解决方案非常满意。然后我意识到另一个问题,如果我不小心直接调用了 Apple 的方法(我有一个名为 的方法myPresentViewController:animated:completion:
,myDismissViewControllerAnimated:completion:
它处理排队)。
如果我直接调用 Apple 的方法,有没有办法设置警告方法?我尝试过创建一个类别(我也尝试过扩展),定义 Apple 的 present 和 dismiss 方法,并向它们添加一条已弃用的消息。这些方法都不起作用。我考虑过 swizzling 方法,但这不起作用,因为如果 swizzled 方法将其添加到队列中,它如何知道何时调用苹果的实现?我意识到警告会出现在我需要调用 Apple 方法的地方,但我可以使用 #pragma 来禁止我需要的两行警告。