【发布时间】:2013-06-09 20:09:32
【问题描述】:
我对 iPhone 开发比较陌生,但我已经做了 20 年以上的 Windows 程序员。
我最近被要求开发一个应用程序,它可以读取外部传感器数据,创建内存热图图像,然后将图像渲染到屏幕上。
Xcode v4.6.2 - iOS 6.1 模拟器/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 保持灰色。我找不到任何错误,也没有抛出异常。图片对象不为空,所有代码行都执行成功。
调用 setNeedsDisplay 似乎也无济于事。
这几天我一直在摸不着头脑。
有没有可能:
(a) 硬件配置文件不完整?或者 (b) 当我在硬件上运行时,视图中的 UIImageView 以某种方式与代码引用断开连接?
【问题讨论】:
-
CGIImageRef 本身就是一个指针,所以这里 CGIImageRef* cgimg asterics 不是必需的。在最后一行中,您尝试不使用 CGIImageRef 而是使用指向 CGIImageRef 的指针来初始化 UIImage。编译器应该对此抱怨。注意编译器警告。
-
你拼错了 CGIImageRef,应该是 CGImageRef!
-
你应该有这个编译器警告'不兼容的指针类型发送'CGImageRef *'(又名'struct CGImage **')到类型'CGImageRef'(又名'struct CGImage *')的参数;使用 *' 取消引用,前提是您已更正 CGIImageRef 的拼写。
-
谢谢,我将检查编译器警告,并重新检查我的方法的返回类型。 ...并更新拼写。 (我不得不手动转录所有内容,因为我工作地点的 Mac 没有连接到网络)。
-
哎呀,这实际上是我的转录错误,当我构建代码时没有警告 - 所以我去寻找警告设置的级别。我将编辑上面的代码并删除“*”。虽然它仍然无法在硬件上运行:(
标签: iphone ios xcode uiimageview ios-simulator