0

サポートされている最小バージョンが iOS 7.1 のアプリを App Store に持っています。

次のバージョンでは、iOS 8 で導入された Photos フレームワークを使用するように拡張しました。

アプリの次のバージョンのコードでは、iOS 7 デバイスで実行されている場合、新しい機能が隠されていることを確認しました。

ただし、iOS 7.1 テスト デバイスでアプリを実行しようとすると、失敗します。これは、以下を使用して多くのクラスに Photos フレームワークを含めたためです。

#import <Photos/Photos.h>

Xcode で受け取るエラーは次のとおりです。

「dyld: ライブラリが読み込まれていません: /System/Library/Frameworks/Photos.framework/Photos 参照元: /var/mobile/Applications/2CA13C9B-EABC-47C3-A198-A7C703EACD59/ABCapp.app/ABCapp 理由: 画像が見つかりません」

iOS 7 を引き続きサポートできるように、コンパイル時ではなく実行時にこれを行う方法はありますか?

ありがとう。

4

1 に答える 1

0

フレームワークの弱いリンクを使用します。

フレームワーク内のシンボルが弱いリンクとして定義されている場合、プロセスが実行を継続するためにシンボルが実行時に存在する必要はありません。静的リンカは、シンボルを参照するすべてのコード モジュールで、弱くリンクされたシンボルを識別します。動的リンカーは、実行時にこの同じ情報を使用して、プロセスの実行を継続できるかどうかを判断します。弱くリンクされたシンボルがフレームワークに存在しない場合、コード モジュールはそのシンボルを参照しない限り実行を続けることができます。

そして、ここに Marco Arment の弱いリンクがあります:

iPhone または iPad アプリを古いバージョンの OS で動作させたい場合、または iPhone と iPad の両方で動作するユニバーサル アプリを作成したい場合は、コードがメソッドを呼び出したりインスタンス化したりしないようにする必要があります。 OS 上に存在しないオブジェクト。[...] そのすべてを回避するためのもう 1 つのオプションは、弱いリンクです。これにより、ランタイムは最初に使用する前にすべてのシンボルの存在を手動で検索します。

于 2015-10-05T20:36:04.480 に答える