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