我需要维护两个 sdk(3.0 和 4.0)。但在 3.0 sdk 中我遇到错误。
CGFloat maxScale;
if ( [[UIScreen mainScreen] respondsToSelector: @selector (scale)] == YES )
{
maxScale = 1.0 / [[UIScreen mainScreen] scale];
}
else
{
maxScale = 1.0;
}
warning: 'UIScreen' may not respond to '-scale'
error: invalid operands to binary / (have 'double' and 'id')
如何解决这个问题?
最佳答案
如果您希望在使用不同的 SDK 版本构建时代码有所不同,则需要使用预处理器:
#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
maxScale = 1.0 / [[UIScreen mainScreen] scale];
#else
maxScale = 1.0;
#endif
但通常您不需要这样做,请使用您拥有的最新 SDK 构建您的项目,并为目标的“iOS 部署目标”属性设置适当的值。然后您的应用程序将在您指定的 SDK 版本上运行,并且您拥有的代码将运行时检查 -scale
方法是否存在。
关于iphone - 我需要维护两个sdk(3.0和4.0)。但在 3.0 sdk 中我收到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693668/