在Xcode 5.0.2中
最后将以下代码添加到viewDidLoad
:
_imageView.image = [UIImage imageNamed:@"male.png"];
这很有效:
然后我添加JMImageCache project中的4个文件,并将ViewController.m更改为:
#import "ViewController.h"
#import "JMImageCache.h"
static NSString* const kAvatar = @"http://gravatar.com/avatar/55b3816622d935e50098bb44c17663bc.png";
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[_imageView setImageWithURL:[NSURL URLWithString:kAvatar]
placeholder:[UIImage imageNamed:@"male.png"]];
}
@end
不幸的是,这导致app crash出现错误消息Thread 1: EXC_BAD_ACCESS
:
在his webpage Jake Marsh(JMImageCache的作者)注意到:
JMImageCache有目的地使用NSString对象而不是NSURL来简化操作并减少[NSURL URLWithString:@“...”]位到处。如果您发现任何奇怪的EXC_BAD_ACCESS异常,请注意一些事项,确保您传入NSString而不是NSURL。
但是(作为iOS编程新手)我不明白,Marsh先生究竟是什么意思 - 因为他的文件UIImageView+JMImageCache.m将公共方法的第一个参数声明为NSURL
:
- (void) setImageWithURL:(NSURL *)url placeholder:(UIImage *)placeholderImage {
[self setImageWithURL:url key:nil placeholder:placeholderImage];
}
笔记可能已过时,我该如何修复我的应用程序?
答案 0 :(得分:3)
这是JMImageCache中的一个错误。 setImageWithURL:key:placeholder:completionBlock:
自称,耗尽了筹码。
要解决此问题,请调用方法的较长形式:
[_imageView setImageWithURL:[NSURL URLWithString:kAvatar]
key:nil
placeholder:[UIImage imageNamed:@"male.png"]
completionBlock:nil
failureBlock:nil];
或者,使用旧版本的库(例如0.4.0)。看起来这个错误是在1af09be78a中引入的。