Этот метод является закрытым методом, который не предназначен для использования сторонними разработчиками.
Причина, по которой это работает, заключается в динамическом дизайне Objective-C. Хотя Apple может скрывать свои методы в частных категориях, они не могут препятствовать их вызову во время выполнения.
Я предполагаю, что вы получаете предупреждение, объясняющее, что UINavigationController
(или какой-либо другой класс) может не отвечать на этот метод и будет считать, что он возвращает (id) и принимает ... в качестве аргументов. Это если вы сами не раскрыли метод.
В любом случае, Apple обнаружит это во время проверки, и ваше приложение, скорее всего, будет отклонено. Использование частного API запрещено условиями SDK.