У меня очень интересная проблема. В моем приложении возникла проблема с presentViewController:animated:completion:
и dismissViewControllerAnimated:completion:
. Произошло то, что вызывается presentViewController, и, основываясь на информации о сервере, возможно, что View Controller будет отклонен. Я получаю сообщение об ошибке «Невозможно закрыть, пока оно не будет полностью представлено» (для анимации установлено значение «ДА»).
Я реализовал очередь для обработки текущих вызовов и отклонения вызовов. Это работает отлично, и я очень доволен этим решением. Затем я понял еще одну проблему: что, если я случайно вызову методы Apple напрямую (у меня есть методы с именами myPresentViewController:animated:completion:
и myDismissViewControllerAnimated:completion:
, которые обрабатывают очередь).
Есть ли способ настроить метод предупреждения, если я напрямую вызову методы Apple? Я попытался создать Категорию (я также пробовал Расширение), определить методы Apple Present и Disk, а также добавить к ним устаревшее сообщение. Ни один из этих способов не работал. Я думал об изменении методов, но это не работает, потому что, если метод swizzled добавит его в очередь, как он узнает, когда вызывать реализацию Apple? Я понимаю, что предупреждение появится в одном месте, где мне нужно вызвать метод Apple, но я могу использовать #pragma, чтобы запретить предупреждения для двух строк, которые мне нужны.