1

私は iPhone OS 3.1.3 用に開発しており、Dropbox API を使用する必要があります。

問題は、Dropbox API が少なくとも iOS 4.2 を必要とすることです。Ok。

3.1.3 でプログラムを使用する可能性を保存することにしましたが、4.2 以降であれば Dropbox 機能があります。

Dropbox フレームワークを使用するには、別のフレームワークをリンクする必要がありました。

  • Security.framework
  • QuartzCore.framework

私はこれをしました。

Dropbox.framework を自分のプロジェクトにリンクすると、プログラムは iPhone Simulator では問題なく動作しますが、iPhone 3.1.3 では起動できません。出力にエラーがあります:


dyld: シンボルが見つかりません: _kSecAttrAccessible 参照元: /var/mobile/Applications/C1FC10E5-0A36-4DEB-BD27-5028C205C89D/Bus Time.app/Bus Time 予期される場所: /System/Library/Frameworks/Security.framework/Security in /var/mobile/Applications/C1FC10E5-0A36-4DEB-BD27-5028C205C89D/バスタイム.app/バスタイム


質問は次のとおりです。

プログラムの起動時に iOS のバージョンを検出し、フレームワークのリンクを解除できますか? または、3.1.3 で Dropbox を使用する別の方法を提供できますか?

回答ありがとうございます。それは有り難いです。

4

2 に答える 2

2
  1. ファイルリストでセキュリティフレームワークを選択します。
  2. 右側のサイドバーを展開します([表示]>[ユーティリティ]>[ユーティリティの表示])。
  3. 「ターゲットメンバーシップ」の下で、「必須」を「オプション」に変更します。
于 2012-05-24T23:27:36.097 に答える
2

実行時にフレームワークをプログラムでリンク解除することはできません。

NSBundle API、dlopen、またはその他のさまざまな方法を使用して、実行時にフレームワークをプログラムでリンクできます。その場合、必要な ObjC オブジェクトや C シンボルを手動でロードする必要があります。

または、フレームワークを弱いリンクにすることもできます。これにより、ランタイムがほとんどの作業を行います。そこにある場合は、起動時に読み込まれ、その ObjC オブジェクトと C シンボルがすべて利用可能になります。それ以外の場合、その ObjC オブジェクトと C シンボルはすべて null になります。そのため、null をチェックして、そのフレームワークを必要とするコードを実行するかどうかを決定するだけです。

于 2012-05-24T23:32:25.570 に答える