2012-04-21 2 views
5

Я работаю над крупномасштабным проектом на iOS, и хочу отделить независимые модули от нескольких загружаемых пакетов. Однако официальный документ указывает, что загружаемый пакет не поддерживается в iOS. Кроме того, я планирую использовать внутреннее распространение, поэтому одобрение магазина приложений не является проблемой.Загружаемый пакет на iOS, есть ли способ достичь этого?

Теперь мой вопрос: я звоню [_bundle principalClass] в код для доступа к классу ввода загружаемого пакета. Он отлично работает на устройствах iOS, заблокированных от взлома. Для unjailbroken устройств, когда я использую режим отладки с Xcode, он отлично работает. Но когда я запускаю его самостоятельно, с трамплина, он падает на задний план.

Я действительно хочу знать:

1) Почему это так сильно отличается для загружаемый пакет работает на взломанный/unjailbroken устройства?
2) Основные отличия между режимом отладки XCode и обычным режимом запуска приложения?

Есть ли какие-нибудь другие сложные способы использования динамической библиотеки на unjailbroken устройствах iOS?

ответ

1

iOS запрещает всю динамическую загрузку исполняемого кода, который не является частью системы; это включает в себя Framework, dylibs, исполняемые страницы памяти с помощью mmap и т. д. Надеемся, что они когда-нибудь позволят динамические пакеты, но пока вам нужно будет создавать свои модули как статические библиотеки и связываться с ними во время сборки. Об этом ограничении нет.

Многие люди писали о том, как это сделать (например, http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/), или вы можете использовать существующий проект в качестве примера. Мне нравится API-интерфейс GData objc, который имеет цели как для динамической структуры при построении для OS X, так и для статической библиотеки при сборке для iOS: http://code.google.com/p/gdata-objectivec-client/