7

iphone や mac などのデバイスからフレームワークが誤って削除された場合はどうなりますか? という質問を受けました。

アプリケーションがクラッシュするか、エラーなしで動作するか?

説明付きで答えてください。

4

3 に答える 3

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  

ここに画像の説明を入力

ここに画像の説明を入力

于 2013-02-22T12:37:30.567 に答える
1

フレームワークが削除された場合、そのフレームワークにリンクしているソフトウェアのみが影響を受けます。それがシステム フレームワークである場合は、システムに障害が発生することを想定してください。サードパーティのフレームワークであれば、影響範囲を限定する必要があります。それがアプリ バンドルにあり、アプリがコード署名されている場合、バンドルされたフレームワークを削除するとアプリが起動しなくなります。

于 2013-02-22T11:50:43.313 に答える
0

削除したフレームワークにアプリケーションがアクセスする必要があるかどうかによって異なります。アプリケーションがフレームワークを必要とする場合、コンパイルされません。必要ない場合は、通常どおりコンパイルされます。

于 2013-02-22T11:51:58.893 に答える