http://tech.gilt.com/post/95741287114/modularity-and-the-ios-status-bar-network-indicator
1 comment | 0 points | by WazanovaNews 約4時間前 edited
GiltがiPhone/iPad開発向けに用意したmockingbird-toolboxをオープンソースとして公開しています。
Focused - it tries to do one main thing.(一つのことだけを提供するシンプルなソリューション)
というコンセプトでの便利なモジュール群が、今後順次追加されるようです。
今回紹介されているのは、ステータスバーに表示されるネットワーク接続のスピナーの管理。UIApplicationのnetworkActivityIndicatorVisibleプロパティは、YES / NOで設定できるようになってますが、例えば、
- ネットワークオペレーションAが開始。
- ネットワークオペレーションBが開始。
- ネットワークオペレーションBが完了。
- ネットワークオペレーションCが開始。
- ネットワークオペレーションAが完了。
- ネットワークオペレーションCが完了。
の場合、スピナーのアニメーションが表示され続けるはずが、実際は、
- スピナー表示。
- スピナーのアニメーションが続く。
- スピナー表示終了。
- スピナー表示。
- スピナー表示終了。
- スピナー非表示のまま。
となり、
複数のコードが
networkActivityIndicatorVisibleプロパティを直接操作しようとすると問題を生じる。
その対策として、ネットワーク接続表示のコーディネータをつくり、その仕様は、
- 実行中のネットワークオペレーション数の管理
- オペレーションが開始される都度、カウントを増やす。
- オペレーションが完了される都度、カウントを減らす。
- カウンターが 0 から 1 に増えると、
networkActivityIndicatorVisibleプロパティをYESにセットする。- カウンターが 1 から 0 に減ると、
networkActivityIndicatorVisibleプロパティをNOにセットする。- マルチスレッド環境で正しく動作する。
オープンソースで提供されているMBNetworkIndicatorクラスが、このコーディネートのパブリックインターフェースを提供します。
#gilt #ios #opensource