2013-02-22 11 views
7

Ich wurde eine Frage gestellt, was passiert, wenn ein Framework versehentlich von Ihrem Gerät gelöscht wird, kann iPhone oder Mac sein?Was passiert, wenn ein Framework aus einer App gelöscht wird?

Ob Ihre Anwendung abstürzt oder es wird ohne Fehler funktionieren?

Bitte geben Sie mir Antwort mit Erläuterungen.

+0

Wenn dies ein Job-Interview-Frage war Sie vielleicht Job-Interview Tag hinzuzufügen. Es existiert, wurde aber noch nicht benutzt. Es könnte nützlich sein, wenn bestimmte Fragen als solche markiert werden. (nur eine Meinung) –

+0

@rokjarc Wir verwenden dieses Tag nicht mehr; es ist wirklich nicht relevant für die Programmierung. Stellen Sie Tags als etwas vor, mit dem ein Programmierer experimentieren würde und dem er folgen möchte, um nach weiteren Fragen zu suchen. –

+0

@Annoop siehe meinen Kommentar oben; Ich entferne das Interview-Frage-Tag. –

Antwort

4

Sie können einen Verknüpfungsfehler erhalten. Wenn der Framework-Ordner in der Anwendung enthalten ist, bedeutet dies die Laufzeitverknüpfung.

OS X bettet einen "Installationsnamen" in jede dynamische Bibliothek ein. Dieser Installationsname ist der Pfad zu dem die Bibliothek gefunden werden kann, wenn dyld sie laden muss. Wenn Sie eine Anwendung erstellen, die mit einer dynamischen -Bibliothek verknüpft, wird dieser Installationsname in die Binärdatei der Anwendung kopiert. Wenn die Anwendung ausgeführt wird, wird der Name der kopierten Installation verwendet, um die Bibliothek oder das Framework zu lokalisieren.

$ 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 

also, wenn Sie Frameworks löscht Ordner, den Sie Dyld Fehler bekommen.

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

Wenn ein Framework gelöscht wird, ist nur Software betroffen, die mit diesem Framework verknüpft ist. Wenn es sich um ein Systemframework handelt, erwarten Sie, dass Ihr System fehlschlägt. Wenn es sich um einen Drittanbieter-Rahmen handelt, sollte der Umfang der Auswirkungen begrenzt sein. Wenn es in Ihrem App-Paket enthalten ist und Ihre App mit Code signiert ist, sollte die Deinstallation des gebündelten Frameworks das Starten Ihrer App verhindern.

0

Es hängt davon ab, ob die Anwendung Zugriff auf das Framework benötigt, das Sie entfernt haben. Wenn Ihre Anwendung das Framework benötigt, wird sie nicht kompiliert. Wenn Sie es nicht brauchen, wird es nur wie üblich kompilieren.

Verwandte Themen