UIImage没有在iPhone5上的UIImageView中显示,但在模拟器中工作

时间:2013-06-13 12:29:23

标签: iphone ios xcode uiimageview ios-simulator

我对iPhone开发相对较新,但已经是Windows程序员20年了。

我最近被要求开发一个应用程序,它可以读取外部传感器数据,创建内存中的热图图像,然后将图像渲染到屏幕上。

Xcode v4.6.2 - iOS 6.1 Simulator / iPhone 5.

(经过一番努力)我成功了。在模拟器上,读取传感器并构建图像文件,并将其作为CGImageRef从我的库中返回。然后,我使用以下代码将其加载到视图控制器中的UIImageView对象中。像这样:

// Line edited to remove transcription error
CGImageRef cgimg = [sensor getSensorImage : 200 : 200]; 
UIImage* image = [UIImage imageWithCGImage : cgimg];

imageView.image = image;

这在6.1模拟器中工作得很好,热图看起来正确并呈现在屏幕上。当我连接iPhone 5并在其上运行时,无法呈现。 UIImageView仍然是灰色的。我找不到任何错误,没有抛出异常。 image对象不为null,并且所有代码行都成功执行。

调用 setNeedsDisplay 似乎也无济于事。

我已经在这个问题上摸不着头几天了。

是否有可能:

(a)硬件配置文件是不完整的?或者(b)当我在硬件上运行时,视图中的UIImageView以某种方式与代码引用断开连接?

1 个答案:

答案 0 :(得分:0)

原来(使用Apple的说法)我这是一个解除分配错误。

在图像创建例程结束时,我试图释放所有用于构建图像的资源,只留下最终图像本身。

其中之一是中间图像的像素缓冲区。一旦我删除了dealloc,图像开始显示在iPhone上。

我已经运行了几个小时的应用程序,没有任何内存泄漏的迹象。我想ARC正在照顾它。

奇怪的是没有报告错误或警告。

模拟真实硬件之间的众多差异之一。

相关问题