带有 UIActivityIndicatorView 参考内存的 UIImageView+AFNetworking 类别是不是保留?
Posted
技术标签:
【中文标题】带有 UIActivityIndicatorView 参考内存的 UIImageView+AFNetworking 类别是不是保留?【英文标题】:UIImageView+AFNetworking categories with UIActivityIndicatorView reference memory retain?带有 UIActivityIndicatorView 参考内存的 UIImageView+AFNetworking 类别是否保留? 【发布时间】:2014-08-13 15:55:00 【问题描述】:我正在尝试实现一个类别,以显示来自 url 的 UIImageView
淡化和 UIActivityIndicatorView
,我在网上找到了一些东西,并在这个最终版本中进行了编辑:
UIImageView+AFNetworkingLoad.m
@implementation UIImageView (AFNetworkingLoad)
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage fadeInWithDuration:(CGFloat)duration withLoadIndicator:(UIActivityIndicatorView *)load_indicator
[load_indicator startAnimating];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPShouldHandleCookies:NO];
[request addValue:@"image/*" forHTTPHeaderField:@"Accept"];
__weak typeof (self) weakSelf = self;
[self setImageWithURLRequest:request placeholderImage:placeholderImage success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
[load_indicator stopAnimating];
if (!request) // image was cached
[weakSelf setImage:image];
else
[UIView transitionWithView:weakSelf duration:duration options:UIViewAnimationOptionTransitionCrossDissolve animations:^
[weakSelf setImage:image];
completion:nil];
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
[load_indicator stopAnimating];
];
然后我以这种方式在自定义UITableViewCell
中使用它:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
...
[cell.img_view setImageWithURL:[NSURL URLWithString:my_url] placeholderImage:nil fadeInWithDuration:0.3 withLoadIndicator:cell.load_img];
...
一切正常,现在我的问题是,通过这个实现传递 UIActivityIndicatorView 的引用,我可以有一些内存泄漏吗?还是保留问题?显然我在我的 ios 项目中使用了 ARC...
【问题讨论】:
【参考方案1】:此类别不应导致内存泄漏。该方法将对象传递到复制的块中,因此它将被该块临时保留,但是一旦图像加载或加载失败,应清除块,这将降低对象的保留计数。
【讨论】:
以上是关于带有 UIActivityIndicatorView 参考内存的 UIImageView+AFNetworking 类别是不是保留?的主要内容,如果未能解决你的问题,请参考以下文章
UIActivityIndicatorView 不工作(获取影响 UIActivityIndicatorView 的 Facebook 权限)
为啥我的 UIActivityIndicatorView 只显示一次?
UIActivityIndicatorView 正确使用
UIActivityIndi catorView未在webview中显示