AFNetworkingソース読解

2077 ワード

  • [dffe 257]の最初のバージョンAFのハイライトはblockベースのコールバックであるべきである.AFCallbackベースクラスは何の役にも立たない.サブクラスAFHTTPOperationは,コンテンツがjsonであればあらかじめdecodeしておく.サブクラスAFImageRequestOperationは,ピクチャに対してキャッシュ+復号を行う.ネットワーク関連はQHTTPOperationで、NSURLConnectionベースのタスクキューです.これまでAFは外部からNSURLRequestを作成してAFOperationに伝達することが用いられてきた.内部完了後にcall blockにコールバックします.
  • [5 b 27 bf 6]新たにAFRestClientを追加し、その構造関数- (NSMutableURLRequest *)requestWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters;は、現在も手動でHTTPパラメータをつなぎ合わせているので、この実現をよく見るべきだ.3.[1 dad 3 cb]AFのUIImgeView拡張も徐々にSDWebImageに近づき、placehoderImage、フィレット、scaleなどがそろっている.
  • [c 004 ceb]HTTP Postはgzip圧縮をサポートする.原理も簡単で、HTTPはgzipを増やせばいい.
  • [d 5 a 972 e]AFImageCacheはNSCacheに継承されており、cacheのオブジェクトについては自分のcache UIImgeではなくNSPurgeableDataである.ドキュメントによると、NSPurgeableDataは、回収される可能性のあるデータに使用されます.You may use these objects by themselves, and do not necessarily have to use them in conjunction with NSCache to get the purging behavior. The NSCache class incorporates a caching mechanism with some auto-removal policies to ensure that its memory footprint does not get too large. ドキュメントでは、NSPurgeableDataはNSCacheで使用すべきではないと指摘しています.そしてこのように修正すると、画像を取るたびにallocのNSImageが再現されます.作者がここで間違っているのではないかと疑っています.
  • [bfb 6 b 35]NSImageが取得したサイズは信用できない場合がありますよ.NSImageのsizeのデフォルトは{0,0}です.正しいサイズはNSBitmapImageRepで.UIImageでは問題ありませんが、sizeプロパティは正しいサイズです.
  • [953 dfbc]AFには__weak __typeof(&*self)weakSelf = self;、アップルには__weak __typeof(self)weakSelf = self;と書かれています.同じ意味だと思います.
  • [0 dbff 83]NSRecursiveLock再帰ロックは、同じスレッドで使用してもデッドロックは発生しません.
  • [02967 ad]AFは、他のネットワークライブラリとは異なり、HTML仕様のサポートに適しています.最初のAFHTTPOperation方式とは異なり、AFHTTPClientはresponseSerializerを指定でき、Image、JSON、Plist、XMLオプションがあります.コールバックされたオブジェクトは直接使用でき、チェックコードを大幅に節約できます.UImitの拡張は良い例です.
  • [040 d 98 fc 7 b]どのようにしてクラスを継承しない方法で拡張しますか?Aspectがベストですが、それはblockベースの使い方です.あるいはAFのように、このクラスに拡張、swizzleを拡張する方法を書きます.
  • [86ade4e13f] DEPRECATED_ATTRIBUTEマクロ、Nullableキーワードは、他人の誤呼び出しを防止する直接的な方法である
  • .