Неужели iOS потеряла большую часть преимущества использования динамических фреймворков?

Неужели iOS потеряла большую часть преимущества использования динамических фреймворков?

Означает ли это, что мы используем динамические фреймворки с dlOpenзагружать их потом будет быстрее статических фреймворков? Потому что динамическим фреймворкам вначале требуется некоторое время для связывания, но они экономят больше времени при загрузке в память. И время загрузки статических фреймворков больше, чем время компоновки в динамических фреймворках. Это правда?

Похоже, что в использовании динамических фреймворков на iOS нет никаких преимуществ, верно?

А как насчет macOS и Linux? Есть ли преимущества у динамических фреймворков? Если да, то как они работают?

1 ответ

Решение

Вы правы во всем этом. Несистемные (то есть не предоставленные Apple) динамические библиотеки будут менее эффективными практически во всех отношениях на iOS. Они не дают вам экономии места или памяти и требуют затрат во время запуска.

Старый документ Apple, на который вы ссылаетесь, был почти полностью написан до появления iPhone. Это относится к поздней загрузке библиотек в приложениях Mac, которые могут помочь ускорить запуск.

В системах с разделяемыми библиотеками (или при использовании системных библиотек, которые совместно используются в iOS) динамические библиотеки экономят дисковое пространство и могут использоваться совместно между процессами, что экономит память и время загрузки (потому что они уже загружены каким-то другим процессом). Но если вы не поделитесь библиотекой, вы не сможете получить ни одного из этих преимуществ. В системах, которые разрешают загрузку библиотек во время выполнения (не iOS), динамические библиотеки могут задерживать затраты на загрузку редко используемого кода, возможно, на неопределенный срок (если код никогда не используется). Кроме того, он открывает возможности для плагинов и других расширений.

Другие вопросы по тегам