Pau*_*III 14 objective-c afnetworking sdwebimage
我注意到UIImageView上的AFNetworking和SDWebImage类别具有相同的方法名称.
AFNetworking:
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
- (void)setImageWithURL:(NSURL *)url
placeholderImage:(UIImage *)placeholderImage
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPShouldHandleCookies:NO];
[request addValue:@"image/*" forHTTPHeaderField:@"Accept"];
[self setImageWithURLRequest:request placeholderImage:placeholderImage success:nil failure:nil];
}
- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest
placeholderImage:(UIImage *)placeholderImage
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure
{
...
}
Run Code Online (Sandbox Code Playgroud)
和SDWebImage
- (void)setImageWithURL:(NSURL *)url
{
[self setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil];
}
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder
{
[self setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil];
}
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options
{
[self setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil];
}
...
Run Code Online (Sandbox Code Playgroud)
在Xcode中,当我命令单击SDWebImage方法时,它将我重定向到AFNetworking方法,反之亦然.
我可以期待哪种行为?我是否应该在我想要使用的类中包含适当类别的标题?如果同一个类需要同时使用该类别的两个实现,该怎么办?
另一个相关问题" 如果两个ObjC类别覆盖相同的方法会发生什么? "并不完全相同,因为AFNetworking和SDWebImage都将类别添加到同一个类而不是子类.在这种情况下,只使用一次类,并且两个类别似乎存在冲突.
小智 8
重命名似乎不是解决问题的最佳方法,
只需使用:
[cell.imageView setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"placeholder"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
}];
Run Code Online (Sandbox Code Playgroud)
从中SDWebImage不存在AFNetworking
名称冲突确实可以在Objective-C运行时发生... Apple建议在方法名称上使用'prefix'.
预期的行为:只有运行时加载的最后一个类别/方法才有效.哪一个 ?不好的问题!
我的建议:重命名!
| 归档时间: |
|
| 查看次数: |
2986 次 |
| 最近记录: |