UIImage* test = [UIImage imageNamed:@"test.png"];
self.image_in_controller = test;
稍后在代码中使用image_in_controller时,我得到EXC_BAD_ACCESS。
我在作业时设定了一个断点。变量测试设置得很好..在分配给selfimage_in_controller之后,测试仍然没问题,但是image_in_controller指向0x0(不是nil)。
如果我在模拟器中运行相同的代码,它工作正常(self.image_in_controller有一个有效的点地址)。
有什么想法吗?
答案 0 :(得分:3)
属性image_in_controller
是否为保留属性?如果没有,您将必须使用retain
消息明确获取图像的所有权。所以其中一个:
@property(retain) UIImage* image_in_controller;
或
self.image_in_controller = [test retain];
应该存在。 EXC_BAD_ACCESS通常是由使用已销毁的对象引起的。另外,测试以确保测试实际上不是零。你可以用断言来做到这一点:
NSParameterAssert(test);
在分配测试后。如果UIImage由于某种原因没有在设备上返回有效对象,它会告诉你。
最后,0x0是nil
的内存地址,因此您经常会在调试器中看到它(并且可以用于所有意图和目的)与nil,Nil,NULL和0相同。