我对ios很新。我试图将图片加载到我的视图中。这是我的代码:
-(void)loadView
{
UIImageView *imageHolder = [[UIImageView alloc] initWithFrame:CGRectMake(40, 40, 40, 40)];
UIImage *image = [UIImage imageNamed:@"test.jpg"];
imageHolder.image = image;
[imageHolder sizeToFit];
[self.view addSubview:imageHolder];
}
在我的名为Test
的类中,它是UIViewController
的子类。 test.jpg
位于同一目录中。当我跑步时,我在这一行收到错误:
UIImage *image = [UIImage imageNamed:@"test.jpg"];
Thread1:EXC_BAD_ACCESS(code=2,address=0xbasd)
我犯了错误?
我正在使用ios7和xcode 5
答案 0 :(得分:1)
我在您的代码中看到了问题。它会导致无限循环。
loadView - 当视图为空并且您负责创建设置视图时,将调用此方法。
当您访问self.view
时,您的视图为空,并且将再次调用loadView方法,并且它将以无限循环结束。
UIImageView *imageHolder = [[UIImageView alloc] initWithFrame:CGRectMake(40, 40, 40, 40)];
UIImage *image = [UIImage imageNamed:@"test.jpg"];
imageHolder.image = image;
[imageHolder sizeToFit];
self.view = [[UIView alloc] initWithFrame:frame];
[self.view addSubview:imageHolder];
图像位于您的文件结构中并不重要。将图像添加到项目时。 您可以通过以下方式执行此操作 - 将图像拖放到项目中。或者 - "将文件添加到项目" 添加图像时,应选择要添加到的目标项目。
答案 1 :(得分:0)
我认为您应该将代码放在-(void)viewDidLoad
方法中,而不是使用loadView方法。顺便说一句,在Xcode5中,您需要右键单击项目并“将文件添加到项目”以添加此图像文件。
-(void)viewDidLoad
{
[super viewDidLoad];
UIImageView *imageHolder = [[UIImageView alloc] initWithFrame:CGRectMake(40, 40, 40, 40)];
UIImage *image = [UIImage imageNamed:@"test.jpg"];
imageHolder.image = image;
[imageHolder sizeToFit];
[self.view addSubview:imageHolder];
}