2013-02-22 40 views
7

我被問到一個問題,當一個框架被意外刪除從你的設備可能會發生什麼事情可能是iPhone或Mac?如果框架從應用程序中被刪除會發生什麼?

無論您的應用程序崩潰還是它沒有任何錯誤都能正常工作?

請給我解釋的答案。

+0

如果這是你可能要增加就業面試標籤的就業面試問題。它存在但尚未使用。如果某些問題會被標記爲這樣,這可能會很有用。 (只是意見) – 2013-02-22 11:53:17

+0

@rokjarc我們不再使用該標籤了;這與編程無關,真的。將標籤看作是程序員所具有的專業知識,並且希望'追隨'來尋找問題。 – 2013-02-22 16:56:11

+0

@Anoop在上面看到我的評論;我正在刪除面試問題標籤。 – 2013-02-22 16:57:00

回答

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 

因此,如果您將刪除frameworks文件夾,你會得到dyld的錯誤。

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

這取決於應用程序是否需要訪問您已刪除的框架。 如果您的應用程序需要框架,那麼它將不會編譯。 如果你不需要它,它會像正常一樣編譯。

相關問題