LoginSignup
2
2

More than 5 years have passed since last update.

BTKInjectorでProxyを注入

Last updated at Posted at 2014-04-23

Proxy注入を実装しました

BTKInjectorに今日いれた拡張(1.1.0)で、新たにproxyの注入に対応しました。cocoa pods登録済みです。

- (id) proxyForProtocol : (Protocol *)protocol;

何が便利なの?

BTKInjectorはオブジェクト生成時に依存関係を解決するため、循環参照があるとインスタンス注入が出来なくなります。Providerを注入することで初期化時には依存関係の解決を行わず、必要になってからgetすることは出来るのですが、正直書くのが面倒でした。

そして、今日思いついたのがProxy実装です。
Proxyオブジェクトは内部にproviderを注入してあり、必要に応じてproviderに処理を委譲します。ここで重要なのが、「必要になるまでproviderは呼ばれない」という点です。

これにより、インスタンスと同じプロトコルでそのまま使えて、Providerと同じように依存関係の解決を遅延することができます。さらば循環参照!

ちなみに、別記事で書いたDouble-Checked Lockingによる同期処理は、このproxy実行時にパフォーマンスが落ちないように検討したものです。

Where to find?

BTKInjector on github

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2