【发布时间】:2013-07-28 06:05:14
【问题描述】:
Grabkit 是一个插入式 iOS 组件,可轻松从 Facebook、FlickR、Instagram、Picasa 导入照片
在 Grabkit 中,GRKXXXQuery 是将基于委托的查询转换为基于块的查询的包装器。GRKXXXGrabber 是基于块的类,它使用 GRKXXXQuery 从云服务中抓取照片。
以 GRKFlickrXXX 为例。 GRKFlickrGrabber 有一个 NSMutableArray 存储查询(在超类 GRKServiceGrabber 中)。在方法albumsOfCurrentUserAtPageIndex:withNumberOfAlbumsPerPage:andCompleteBlock:andErrorBlock: 中,通过调用registerQueryAsLoading: 创建了一个查询(GRKFlickrQuery)并将其存储在NSMutableArray 中。查询将块作为参数,在 GRKFlickrQuery 中这些块存储为实例变量。这些块中有self
简单地说:GRKFlickrGrabber -> NSMutableArray(_queries) -> GRKFlickrQuery(query) -> 块 -> GRKFlickrGrabber(self)
所以这里有一个保留周期。但是当我使用仪器分析 Grabkit Demo 时,没有泄漏。他们是否使用了一些打破retian循环的技巧?
【问题讨论】:
标签: objective-c objective-c-blocks memory-leaks