#ios #swift #xcode #ibdesignable
#iOS #swift #xcode #ibdesignable
Вопрос:
Я заметил, что Xcode способен запускать код UIKit для IBDesignables, вообще не запуская симулятор. Похоже, он использует IBDesignablesAgentCocoaTouch
инструмент, который является приложением для macOS. Как что-то подобное может быть реализовано?
Комментарии:
1. что вы хотите сделать???
2. вы хотите модульные тесты без симулятора?
3. В основном аналогичное поведение, как IBDesignablesAgentCocoaTouch, но без Xcode.
Ответ №1:
Приложения iOS, скомпилированные для x86_64, на самом деле являются обычными приложениями macOS, просто связанными с разными фреймворками. Платформа simulator предоставляет среду выполнения, необходимую для того, чтобы все эти платформы функционировали аналогично тому, как они работают на оборудовании iOS. IBDesignablesAgentCocoaTouch
Демон запускает достаточно подсистемы iOS, чтобы иметь возможность делать снимок вашего пользовательского интерфейса каждый раз, когда вы вносите изменения в Xcode. Теоретически, можно частично или полностью запустить подсистему iOS иным способом, чем это делает симулятор, но это, скорее всего, нарушает лицензионное соглашение с разработчиком, которое вы подписали при установке, и, безусловно, не является законным для распространения. Законно или нет, это было бы довольно сложной задачей и, скорее всего, приводило к сбоям при каждом изменении в системе. Достаточно взглянуть на то, как сильно изменилась платформа симулятора за последние годы, чтобы получить представление о том, насколько сложно это было бы для разработчиков, не принадлежащих Apple.
Например, если вам нужно запустить код, отличающийся от пользовательского интерфейса, для тестирования, есть гораздо более простые способы достичь того, что вам нужно, такие как создание целевого объекта macOS и включение в него всего, что не относится к пользовательскому интерфейсу, и исключение абсолютно минимально необходимого пользовательского интерфейса для тестирования.
Если вы хотите добиться мультиплатформенной разработки с использованием фреймворков iOS, а затем запускать их с использованием фреймворков Apple iOS вне симулятора, это незаконно (фреймворки iOS обычно не распространяются с macOS и требуют установки Xcode) и не является хорошей идеей, поскольку пользователи ожидают, что приложения будут вести себя изначально на платформе, на которой они запущены. Концепции пользовательского интерфейса iOS лучше всего подходят для сенсорного ввода, но они были бы неуместны в экосистеме ввода с точным указателем.
Комментарии:
1. Спасибо за ответ. Значит, IBDesignablesAgentCocoaTouch похож на мини-симулятор? Это довольно круто.
2. Я не собирался нарушать никаких соглашений. Просто спрашиваю из любопытства. И, возможно, это можно было бы использовать для целей отладки.