Синглтоны в плагинах Cocoa

Как мне получить синглтон в основном приложении из плагина SIMBL? Когда я пытаюсь вызвать что-то вроде [ProcessControl sharedInstance], я получаю сообщение об ошибке, что ProcessControl не определен (хотя он объявлен в заголовочном файле).


person David Beck    schedule 21.05.2010    source источник


Ответы (1)


Используйте NSClassFromString для поиска класса во время выполнения, затем отправьте ему сообщение sharedInstance как обычно.

Будьте готовы к тому, что NSClassFromString вернет Nil или сообщение классу не будет выполнено. Любой из них произойдет, если разработчик приложения удалит или переименует класс или его одноэлементный метод. Вы берете на себя этот риск всякий раз, когда пишете подключаемый модуль для приложения, у которого нет задокументированного поддерживаемого API подключаемого модуля.

Ваш «плагин» будет наиболее надежным, если весь ваш код, взаимодействующий с классами приложения и его экземплярами, выглядит полностью параноидальным.

person Peter Hosey    schedule 21.05.2010
comment
Я знал, что должна быть такая функция, но хоть убей, я не мог ее найти. Хорошая вещь в SIMBL заключается в том, что вы можете ограничить работу плагина только теми версиями, с которыми вы его тестировали. - person David Beck; 21.05.2010