Grabkitは、Facebook、FlickR、Instagram、Picasa から写真を簡単にインポートするためのドロップイン iOS コンポーネントです
Grabkit では、GRKXXXQuery はデリゲート ベースのクエリをブロック ベースのクエリに変換するラッパーです。GRKXXXGrabber は、GRKXXXQuery を使用してクラウド サービスから写真を取得するブロック ベースのクラスです。
たとえば、GRKFlickrXXX を考えてみましょう。GRKFlickrGrabber には、クエリを格納する NSMutableArray があります (スーパー クラス GRKServiceGrabber 内)。メソッドalbumsOfCurrentUserAtPageIndex:withNumberOfAlbumsPerPage:andCompleteBlock:andErrorBlock:
では、クエリ (GRKFlickrQuery) が作成され、 を呼び出して NSMutableArray に格納されましたregisterQueryAsLoading:
。クエリはブロックをパラメーターとして受け取り、GRKFlickrQuery ではこれらのブロックはインスタンス変数として格納されます。そしてself
、これらのブロックにあります
単純に: GRKFlickrGrabber -> NSMutableArray(_queries) -> GRKFlickrQuery(query) -> ブロック -> GRKFlickrGrabber(self)
したがって、ここには保持サイクルがあります。しかし、計測器を使用して Grabkit Demo をプロファイリングすると、リークはありません。彼らは、retian サイクルを破るいくつかのトリックを使用しましたか?