Gilt: iOSのネットワーク接続表示の管理

http://tech.gilt.com/post/95741287114/modularity-and-the-ios-status-bar-network-indicator

1 comment | 0 points | by WazanovaNews 約4時間前 edited


Jshiike 約4時間前 edited | ▲upvoteする | link

GiltがiPhone/iPad開発向けに用意したmockingbird-toolboxをオープンソースとして公開しています。

Focused - it tries to do one main thing.(一つのことだけを提供するシンプルなソリューション)

というコンセプトでの便利なモジュール群が、今後順次追加されるようです。

今回紹介されているのは、ステータスバーに表示されるネットワーク接続のスピナーの管理。UIApplicationnetworkActivityIndicatorVisibleプロパティは、YES / NOで設定できるようになってますが、例えば、

  1. ネットワークオペレーションAが開始。
  2. ネットワークオペレーションBが開始。
  3. ネットワークオペレーションBが完了。
  4. ネットワークオペレーションCが開始。
  5. ネットワークオペレーションAが完了。
  6. ネットワークオペレーションCが完了。

の場合、スピナーのアニメーションが表示され続けるはずが、実際は、

  1. スピナー表示。
  2. スピナーのアニメーションが続く。
  3. スピナー表示終了。
  4. スピナー表示。
  5. スピナー表示終了。
  6. スピナー非表示のまま。

となり、

複数のコードがnetworkActivityIndicatorVisibleプロパティを直接操作しようとすると問題を生じる。

その対策として、ネットワーク接続表示のコーディネータをつくり、その仕様は、

  • 実行中のネットワークオペレーション数の管理
    • オペレーションが開始される都度、カウントを増やす。
    • オペレーションが完了される都度、カウントを減らす。
  • カウンターが 0 から 1 に増えると、networkActivityIndicatorVisibleプロパティをYESにセットする。
  • カウンターが 1 から 0 に減ると、networkActivityIndicatorVisibleプロパティをNOにセットする。
  • マルチスレッド環境で正しく動作する。

オープンソースで提供されているMBNetworkIndicatorクラスが、このコーディネートのパブリックインターフェースを提供します。

#gilt #ios #opensource


ワザノバTop200アクセスランキング


Back