[英]Fade in UIButton images after they load from URL
我正在使用AFNetworking方法将图像加载到UIBUttons中。 我的目标是在加载后用淡入淡出的动画显示图像。
[leftBtn setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:leftImageUrl]] placeholderImage:nil forState:UIControlStateNormal success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
[UIView animateWithDuration:0.4 animations:^() {leftBtn.alpha = 1;}completion:^(BOOL finished){}];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
//
}];
Capturing 'leftBtn' strongly in this block is likely to lead to a retain cycle
我理解为什么收到上述警告并寻找解决问题的明智方法。 谢谢
您应该使用类似:
__weak UIButton *weakLeftBtn = leftBtn;
[leftBtn setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL
URLWithString:leftImageUrl]]
placeholderImage:nil
forState:UIControlStateNormal
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
[UIView animateWithDuration:0.4 animations:^() {
weakLeftBtn.alpha = 1;
}completion:^(BOOL finished){}];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
// if something went wront
}];
更新:在您的代码中, leftBtn
指向一个块,而该块指向leftBtn
。 这导致保留周期。 在我的代码中, leftBtn
指向该块,但是该块指向带有__weak
限定符声明的weakLeftBtn
,这意味着只要它还活着,而不会与它保持牢固的关系,它将正确地指向leftBtn
。 因此,在这种情况下, leftBtn
“拥有”该块,但该块不“拥有”任何局部变量或实例变量。
有关此主题的一些有价值的读物:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.