2

シングルトンの作成時にランタイム引数をシングルトンに挿入し、それ以降はそれらの引数を記憶させる方法を見つけようとしています。ただし、実行時引数のインターフェイスがこれをサポートできるかどうかはわかりません。たとえば、トークンを必要とする Client オブジェクトがあり、次の初期化子があるとします。

+ (instancetype)initWithToken:(NSString *)token;

トークンは実行時にサーバーから取得され、ユーザーごとに異なるため、単純に NSString を定義に入れることはできません。そこで、Typhoon アセンブリに次のメソッドを作成します。

- (Client *)clientWithToken:(NSString *)token;

ただし、将来 (このクライアントを他のクラスに注入するとき)、このメソッドを呼び出すためのトークンが手元にありません。[self client]したがって、たとえば、単に注入できるようにしたいと考えています。クライアントはシングルトンであり、既に作成されているため、とにかくトークンは必要ありません。

しかし、私はこれを行う方法を見つけることができないようです。明らかに、呼び出される別のメソッドを定義するとclient、別のクライアントが返されます。クライアントが既に存在する場合、呼び出すだけclientWithToken:nilで引数は無視されますか? おそらく、アセンブリのsingletons配列をトラバースすることはうまくいくでしょうが、それは明らかに非常に洗練されていません。

タイプごとに注入することを検討しましたが (メソッドを呼び出す必要はありません)、同じタイプの異なるクライアントが複数あるため、どのクライアントを注入するかを明示する必要があります。もちろん、このパラメーターを初期化子から削除し、代わりにアセンブリの外部からプロパティとして設定するオプションもあります。ただし、このパターンはアプリケーション全体で使用されるため、それほど多くのコードを書き直すことは避けたいと考えています。

ありがとうございました。

4

1 に答える 1