Как мне получить синглтон в основном приложении из плагина SIMBL? Когда я пытаюсь вызвать что-то вроде [ProcessControl sharedInstance]
, я получаю сообщение об ошибке, что ProcessControl не определен (хотя он объявлен в заголовочном файле).
Синглтоны в плагинах Cocoa
Ответы (1)
Используйте NSClassFromString
для поиска класса во время выполнения, затем отправьте ему сообщение sharedInstance
как обычно.
Будьте готовы к тому, что NSClassFromString
вернет Nil
или сообщение классу не будет выполнено. Любой из них произойдет, если разработчик приложения удалит или переименует класс или его одноэлементный метод. Вы берете на себя этот риск всякий раз, когда пишете подключаемый модуль для приложения, у которого нет задокументированного поддерживаемого API подключаемого модуля.
Ваш «плагин» будет наиболее надежным, если весь ваш код, взаимодействующий с классами приложения и его экземплярами, выглядит полностью параноидальным.
person
Peter Hosey
schedule
21.05.2010
Я знал, что должна быть такая функция, но хоть убей, я не мог ее найти. Хорошая вещь в SIMBL заключается в том, что вы можете ограничить работу плагина только теми версиями, с которыми вы его тестировали.
- person David Beck; 21.05.2010