我在检测iOS设备上的视网膜显示时出现问题。我使用的是建议由不同的人下面的代码:iOS视网膜显示检测代码不起作用
BOOL isRetina()
{
UIScreen* s = [UIScreen mainScreen];
if ([s respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
[s respondsToSelector:@selector(scale)])
{
CGFloat scale = [s scale];
return scale == 2.0;
}
return NO;
}
的问题是,它编译罚款部署目标的iOS 4或更高,但是当我编译iOS3.2我得到一个“不兼容类型在初始化“错误在”scale = [s scale]“行,因为我试图将一个id分配给一个浮点数。我找不到任何关于此的信息。由于其他人似乎都在使用这种方法,我必须在这里错过一些非常明显的东西?顺便说一下,使用XCode 4的Base SDK版本是4.3。
这里是我的BaseSDK /部署目标设置:
更新:我已经解决了它。基本上问题是一些XCode问题。要解决一些其他问题,我必须卸载并重新安装XCode。之后,行为消失了。
而只是将结果投入浮动不起作用? (即''CGFloat scale =(CGFloat)[s scale];') – jv42 2011-04-14 14:09:56
不,您不能将指针类型转换为浮点型。我已经尝试过了。甚至试图通过无效*。 – Gottfried 2011-04-14 14:34:34
当然,因为我有一段时间不在ObjC,所以我忘记了它的一些内在细节。祝你好运! – jv42 2011-04-14 15:03:13