Я создал подкласс системного класса (UINavigationBar, если быть точным), чтобы добавить некоторые специфические функции. Я использовал это везде, как замену UINavigationBar. Однако теперь я хочу заменить некоторые UINavigationBars, используемые в системных фреймворках, моим собственным подклассом, чтобы они обеспечивали такое же поведение. В частности, я хотел бы, чтобы UINavigationBar в контроллере представления UITabBarController был экземпляром моего класса.
Я думал, что это невозможно, поэтому попытался создать категорию в UINavigationBar, которая будет распространяться по всей системе. Тем не менее, моя категория должна будет выполнить некоторую пользовательскую инициализацию и отмену (подписка и отказ от подписки на уведомление NSNotificationCenter). Если я перезапишу методы init/dealloc в своей категории, я не смогу вызывать исходные методы (реализованные UINavigationBar), что может быть очень опасным/фатальным/вероятно, не очень функциональным.
Одним из возможных решений является метод swizzling, но я не совсем уверен, как его использовать, и, по-видимому, это может быть довольно сложно.
Если кто-нибудь сможет рассказать о том, как реализовать что-то, что решит мои проблемы (или какой-нибудь собственный код, как я мог бы использовать метод swizzling), я был бы очень благодарен.