Мне было интересно, знает ли кто-нибудь, как iSimulate автоматически регистрирует/перехватывает себя в отладочное приложение iDevice? Это так же просто, как включение статической библиотеки (и нескольких фреймворков), и она просто работает. Для вызова нет методов или функций. Как это возможно?iSimulate Автоматические крюки
ответ
Короткий ответ: используя категории в Objective-C, вы можете расширить или расширить любой класс в системе, включая основные классы и сам NSObject. (Подобно «патчу обезьян» в Ruby, например.)
Фактическое сообщение, скорее всего, является широковещательной передачей, отправляющей пакеты, которые не ожидают ответа. Когда вы запускаете свое приложение, оно просто начинает перехватывать эти пакеты. Таким образом, приложение-симулятор подключается к потоку iSimulate, а не iSimulate каким-то образом «достигает» вашего приложения.
Посмотрите на источник с открытым исходным кодом accelerometer simulator проект. Вы также можете легко распространить его на трансляцию, и в основном дублировать то, что делает iSimulate. И вы узнаете о отличной стороне Objective-C.
- 1. SonataAdmin крюки не стреляют
- 2. Крюки Datamapper не работают
- 3. Как используются технологические крюки
- 4. Wordpress крюки действия приоритета
- 5. Пользовательские крюки в Prestashop 1.7
- 6. Page вяжущие переопределяет URL крюки
- 7. Pytest установочные/отрывные крюки для сеанса
- 8. Механизировать крюки для подключения до/после соединения
- 9. Метеорные крюки для маршрутизатора, выполняемые несколько раз
- 10. Исполнительного ГИТ-крюки на окна ошибок из
- 11. Крюки не работают на сервере в codeigniter
- 12. PEP 302 Пример: новые импортные крюки
- 13. Может ли крюки огурца различать теги
- 14. Используйте крюки для форматирования таблицы в выходной
- 15. Крюки на стороне администратора не работают (WordPress)
- 16. Tagged Крюки, не распознанные в определенном пакете
- 17. Недостающие крюки мерзавец файл/пост-receive.sample
- 18. Автоматические отливки
- 19. Автоматические свойства
- 20. Автоматические колонны
- 21. Автоматические сборки
- 22. Автоматические сборки из Github
- 23. Автоматические макеты тестов
- 24. Автоматические налоговые таблицы продаж
- 25. Открытые графические теги автоматические
- 26. iOS - автоматические обновления PassBook
- 27. Автоматические серии в gnuplot?
- 28. Автоматические миграции EntityFramework Core
- 29. Автоматические обновления Mysql
- 30. Автоматические настройки качества
Я не знал об этом проекте, но это удобно знать. Я действительно люблю Objective-C и Ruby за их способность переопределять/расширять существующую реализацию. Это не решение, из которого я был оригинальным, но это дает мне представление о другой проблеме, которую я испытывал :) Я думаю, что нашел решение, используя функцию инициализации (INIT_ROUTINE в XCode) компоновщика, через Mach-O Ссылка на формат файла ABI. Я собираюсь дать вихрь. – pryomoax
Ok, INIT_ROUTINE предназначен только для динамических библиотек, которые, как мы знаем, не могут быть созданы для приложений iPhone - Grrr! – pryomoax
'__attribute __ ((constructor)) static void MyInit() {doSomething(); } 'работает, как и добавляет к классам метод' + load' или '+ initialize'. – rpetrich