ソースコードの読み取り:AFNetworking(10)-AFNetworkActivityIndicatorManager
Source Code Reading Afnetworking Afnetworkactivityindicatormanager
記事が読んでいるAFNetworkingのバージョンは3.2.0です。
このクラスは、ネットワーク要求時にステータスバーの左上隅のローテーションを制御するネットワークアクティビティインジケータの表示と非表示です。
コードを読んだ後、それを整理することができます。AFNetworkActivityIndicatorManager
クラスワークフロー:
- ネットワークアクティビティインジケータを表示する
1.通知リスナーを初期化メソッドAFNetworking
of task
開始、一時停止、および終了に登録します。
2.受信時task
通知が開始されると、現在のネットワーク要求アクティビティ番号が通知コールバックメソッドに記録され、KOVが手動で送信されてから、ステータス更新メソッドが呼び出されます。
3.ステータス更新方式では、現在のステータスが非アクティブで、ネットワーク要求アクティビティがある場合、現在のステータスは遅延開始ステータスに設定されます。
In currentState
属性のセッターでは、KVOが最初に手動で送信されます。設定状態が開始遅延状態であることが判明した場合、開始遅延タイマーがオンになります。
5.タイマーメソッドは1秒後にトリガーされます。タイマー方式では、進行中のネットワーク要求がまだあることが判明した場合、現在の状態がアクティブ状態に設定されます。ただし、進行中のネットワークリクエストがない場合、ステータスは非アクティブに設定されます。
6.次に、書き換えに戻りましたcurrentState
属性のセッターで、KVOは引き続き手動で送信されます。設定状態が開始状態であることが判明した場合、完了遅延タイマーが終了し、ネットワークアクティビティインジケータが表示されます。
- ネットワークアクティビティインジケータを非表示にする
7.受信時task
通知の最後に、同じ数の現在のネットワーク要求アクティビティが通知コールバックメソッドに記録され、KOVが手動で送信されてから、ステータス更新メソッドが呼び出されます。
8.ステータスの更新方法では、現在のステータスがアクティブで、進行中のネットワーク要求がない場合、現在のステータスは遅延ステータスの終了に設定されます。
9.書き換え時currentState
属性セッターでは、手動でKVOを送信するほか、設定状態が遅延終了状態であることが判明した場合、完了遅延タイマーがオンになります。
10. 0.17秒後、timerメソッドがトリガーされ、timerメソッドが状態を非アクティブに設定します。currentState
セッターで、最初に手動でKVOを送信し、非アクティブ状態で、開始および終了遅延タイマーを終了します。 、およびネットワークアクティビティインジケータを非表示にします。
ソースコード読み取りシリーズ:AFNetworking
ソースコードの読み取り:AFNetworking(a)-使用を開始します
ソースコードの読み取り:AFNetworking(two)-AFURLRequestSerialization
ソースコードの読み取り:AFNetworking(3)-AFURLResponseSerialization
ソースコードの読み取り:AFNetworking(4)-AFSecurityPolicy
ソースコードの読み取り:AFNetworking(5)-AFNetworkReachabilityManager
ソースコードの読み取り:AFNetworking(6)-AFURLSessionManager
ソースコードの読み取り:AFNetworking(7)-AFHTTPSessionManager
ソースコードの読み取り:AFNetworking(8)-AFAutoPurgingImageCache
ソースコードの読み取り:AFNetworking(9)-AFImageDownloader
ソースコードの読み取り:AFNetworking(10)-AFNetworkActivityIndicatorManager
ソースコードの読み取り:AFNetworking(11)-UIActivityIndicatorView + AFNetworking
ソースコードの読み取り:AFNetworking(12)-UIButton + AFNetworking
ソースコードの読み取り:AFNetworking(13)-UIImageView + AFNetworking
ソースコードの読み取り:AFNetworking(14)-UIProgressView + AFNetworking
ソースコードの読み取り:AFNetworking(15)-UIRefreshControl + AFNetworking