Как я могу получить синглтон в основном приложении из плагина SIMBL? Когда я пытаюсь вызвать что-то вроде [ProcessControl sharedInstance]
, я получаю сообщение об ошибке, которое ProcessControl не определено (хотя оно объявлено в файле заголовка).Синглтоны в плагинах Cocoa
0
A
ответ
1
Используйте NSClassFromString
, чтобы посмотреть класс во время выполнения, затем отправьте сообщение sharedInstance
как обычно.
Будьте готовы к NSClassFromString
, чтобы вернуть Nil
или сообщение об ошибке для класса. Любой из них произойдет, если разработчик приложения удалит или переименует класс или его метод singleton. Вы принимаете этот риск каждый раз, когда вы пишете подключаемый модуль для приложения, у которого нет документированного поддерживаемого API подключаемого модуля.
Ваш «плагин» будет наиболее надежным, если весь ваш код, который взаимодействует с классами приложения и его экземплярами, выглядит полностью параноидальным.
Я знал, что должна быть такая функция, но для жизни меня я не мог найти. Приятная вещь в SIMBL заключается в том, что вы можете ограничить плагин для работы только с версиями, с которыми вы его протестировали. –