2013-02-22 3 views
7

Мне задали вопрос, что произойдет, когда фреймворк случайно удалится с вашего устройства, может быть iphone или mac?Что произойдет, если структура будет удалена из приложения?

Оправдается ли приложение или оно будет работать без каких-либо ошибок?

Просьба предоставить мне ответ с разъяснениями.

+0

Если бы это была работа-интервью вопрос, который вы можете добавить задание-интервью тег. Он существует, но еще не использовался. Это может быть полезно, если некоторые вопросы будут отмечены как таковые. (просто мнение) –

+0

@rokjarc Мы больше не используем этот тег; на самом деле это не относится к программированию. Подумайте о тегах как о том, что программист будет иметь опыт работы и захочет «следовать», чтобы искать вопросы. –

+0

@Anoop см. Мой комментарий выше; Я удаляю тег интервью-вопрос. –

ответ

4

У вас может возникнуть ошибка связи. Если фреймворк находится внутри приложения, это означает его привязку к времени выполнения.

OS X внедряет «имя для установки» внутри каждой динамической библиотеки. Это имя установки - это путь к тому, где библиотека может быть найдена, когда dyld необходимо загрузить. Когда вы создаете приложение, которое ссылается на динамическую библиотеку , это имя установки копируется в двоичное приложение . Когда приложение запускается, скопированное имя для установки - это , используемый для поиска библиотеки или фреймворка.

$ otool -D /Applications/Google\ Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python 
    /Applications/Google Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python: 
    @executable_path/../Frameworks/Python.framework/Versions/2.6/Python 

так что если вы удалите папку Каркасы вы получите Dyld Error.

Dyld Error Message: 
    Library not loaded: @loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle 
    Referenced from: /Applications/Transmission.app/Contents/MacOS/Transmission 
    Reason: image not found 

enter image description here

enter image description here

1

Если структура удалена, будет затронуто только программное обеспечение, связанное с этой структурой. Если это системная среда, ожидайте, что ваша система начнет сбой. Если это сторонняя структура, она должна быть ограничена в области воздействия. Если это приложение, и ваше приложение подписано под кодовым названием, удаление связанного с ним фреймворка должно помешать запуску вашего приложения.

0

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

Смежные вопросы