На самом деле не совсем верно, что iPhone не поддерживает динамическое связывание. На самом деле приложения, установленные App Store, не могут динамически связываться.
Магазин приложений / ituned устанавливает программы в каталог / private / var / mobile / .... Любая открытая программа, которая живет в этом подкаталоге, является chroot и имеет определенные права, удаленные при открытии. Процессы chroot не могут быть разветвлены, они не могут работать в фоновом режиме, они не могут загружать динамические библиотеки и не могут сохранять файлы за пределами своих маленьких защищенных областей диска (за исключением фотографий в каталог фотографий). ).
Тем не менее, iPhone работает на современной операционной системе, которая прекрасно поддерживает динамическое связывание. Фактически «джейлбрейк» - это установка программы вне chroot-тюрьмы, которая затем может выполнять такие действия, как разветвление и сохранять файлы в других местах на диске и загружать динамический код.
Apple (и открытое сообщество iPhone) имеет множество программ, работающих на телефоне (например, приложения MobilePhone, Mobile Safari и SpringBoard), которые могут работать в фоновом режиме и загружать библиотеки. Они размещаются в другом месте на диске (/ private / var / stash / Applications часто).
Итак ... если вы хотите продать свое приложение в магазине приложений, вы не можете загрузить динамическую библиотеку. Что для большинства людей означает, что вы не можете загрузить его вообще. Но если вы хотите распространять свое приложение через cydia (распространенный джейлбрейкнутый установщик приложения для телефона), то вы можете избежать джейлбрейка телефона и загрузить свою динамическую библиотеку. На самом деле, из-за того, что процесс установки itunes является виновником, как вы уже поняли, вы даже не можете загрузить dylib из своего собственного приложения, которое пишете на свой телефон ... до тех пор, пока не сделаете джейлбрейк.