2017-03-24 6 views
3

オフラインHLS(新しいios 10機能)をアプリに追加しようとしました。私はオフラインのHLS機能なしでアプリがまだios 9で機能するために、迅速に次のことを試しています。 ios10でもうまく動作し、ios9でもコンパイルできます。私は実際には次のメッセージですぐにアプリがクラッシュする、IOS 9デバイス上でこれを実行するしかしdyldが見つかりませんでした。AVAssetDownladTask

@available(iOS 10.0, *) 
    @objc class DownloadManager: NSObject, AVAssetDownloadDelegate { 
      //Do stuff with downloading assets 
     } 

、:

dyldの:シンボルが見つかりません:_OBJC_CLASS _ $ _ AVAssetDownloadTask参考にし から: /var/mobile/Containers/Bundle/Application/7062C410-C4F5-4270-9F1E-22750E99F799/wod.app/wod /System/Library/Frameworks/AVFoundation.framework/AVFoundation in /var/mobile/Containers /Bundle/Application/7062C410-C4F5-4270-9F1E-22750E99F799/wod.app/wod

私はこれに関連するすべてのコードをDownloadManagerクラスに制限しているので、次に何をするのか分からない。ありがとう!

答えて

3

私はそれを理解しました。私は弱いリンクAVFoundationにしなければならなかった。リンゴのサイトで見つけました。

https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html

全体のフレームワークへの弱いリンクあなたは別の枠組みの中でシンボルを参照する場合

、それらのシンボル のほとんどは、あなたのコードに強くリンクされています。 シンボルへの弱いリンクを作成するには、シンボルを含むフレームワークに明示的に weak_import属性を追加する必要があります(弱リンクのシンボルにマークするを参照)。 しかし、フレームワークを維持しておらず、そのシンボルの弱い部分を にリンクする必要がある場合は、すべて というシンボルをweakリンクとしてマークするように明示的にコンパイラに指示できます。これを行うには、 Xcodeでプロジェクトを開き、ターゲットがフレームワークにリンクする方法を次のように変更する必要があります。

変更するターゲットを選択し、ビルドフェーズを表示します。 リンクライブラリとバイナリのビルドフェーズを展開して、ターゲットによって現在リンクされている フレームワークを表示します。 に弱くリンクしたいフレームワークがリンク付きバイナリライブラリビルド フェーズで表示されている場合は、それを選択し、編集/削除を選択して削除します。今すぐあなたは そのフレームワークの弱いリンクを使用するようにリンカーに指示することができます。

ターゲットを選択し、情報ウィンドウを開き、[ビルド]をクリックします。その他 リンカーフラグビルド設定で、次のコマンドラインオプションを追加します。 ここで、 に弱くリンクしたいフレームワークの名前は次のとおりです。 -weak_framework製品をビルドします。

+0

したがって、解決策は次のとおりです。 「ライブラリとバイナリをリンクする」オプションを設定してAVFoundationを追加しますか? – Renatus

+0

いいえ、そうではありません(少なくとも私がやったことではありません)ステップは、リンクと私が投稿したコメントに記述されています。 – NickDK

関連する問題