私はビデオにSound FXを追加するiOSアプリを持っています。今では、ストックされた写真アプリをサポートするためのアプリ拡張ターゲットを作成したいと考えています。しかし、私はiOSアプリからほとんどすべてのコードを複製する必要があります。私がこれまでに持っていた解決策は、AppDelegateにリンクされているアプリケーションのコードとApp Extensionで使用できないコードが共通のファイルを共有ファイルに入れて両方のターゲットに使用することです。この場合、コードの重複を避けるための良い方法はありますか?iOS既存アプリのアプリ拡張をベースにします。コードの重複を避けるには?
もう1つ質問:私がAppStoreで見たほとんどの拡張機能は1つの画面しか持っていませんが、これに関するルールはありますか?
私のアプリでは、ユーザにフォルダ&のフォルダからサウンドを選択させる必要があり、ナビゲーションコントローラが必要です。しかし、Navigation ControllerはApp Extensionで使用できません。Navigaion Controllerを構築するか、それとも良い方法がありますか?
ほとんどのクラスはView Controllerで、クラス内ではApp Delegateを参照していますが、これはApp Extensionで使用できません –
1つの解決策は抽象レイヤーを追加することです。たとえば、興味のあるデータをアプリケーションデリゲートに格納する代わりに格納するシングルトンクラスを作成することも、同じ名前の2つのクラスを作成することもできます。アプリケーションデリゲート、およびメソッド内で異なる何かをするエクステンションの別のものです。 – dgatwood
もう1つのアプローチは、実際には拡張機能のいくつかの機能が必要ない場合は、アプリケーションデリゲートクラスとの弱いリンクになり、クラス自体がnilであるかどうかを確認し、そうであれば拡張機能で実行され、問題の動作をスキップします。 – dgatwood