我想制作一款可在iPad和iPhone4上运行的通用版本。基本上这是游戏的“HD”版本,它将在更高分辨率的显示设备上运行。
据我所知,iPad和iPhone4都运行armv7,因此选择armv6和armv7似乎没有意义。虽然,这是Apple告诉你的事情。我知道这些说明是在iPhone4出现之前制作的,所以我很想知道是否有人知道为iPad 3.2和iPhone 4.0构建的程序。
如果SDK文档涵盖了这一点,我很抱歉,但我找不到它!
作为奖励,我想知道正在构建的特定SDK的定义,以便我可以进行编译时检查,以便在运行3.2编译时不会出错。层类中有一个名为contentsScale的特定成员,现在存在于4.0中。我只需要知道其中一个或两个的定义名称。 (3.2和4.0)
非常感谢!
凯尔
答案 0 :(得分:2)
如果您希望支持的唯一设备是应用程序中的iPhone 4和iPad,则只能针对armv7进行构建,这会略微减小可执行文件的大小。但是,您需要将armv7
添加到Info.plist中UIRequiredDeviceCapabilities
键下的列表中,以确保App Store列表不允许您在armv6设备上安装它。尽管如此,在允许iPhone 4和iPad的情况下防止在armv7 iPhone 3G S和第三代iPod touch上购买和运行它将会更加棘手。
否则,您将像任何其他通用应用程序一样构建此应用程序。我建议从iPhone项目开始,将其转换为通用应用程序,或者从通用应用程序模板开始。
可以使用-respondsToSelector:
方法检测是否在运行时实现特定方法。例如,以下代码检查CALayer上-contentsScale
的可用性,并调整图层的比例以匹配显示的比例:
if ([self respondsToSelector:@selector(setContentsScale:)])
{
Class screenClass = NSClassFromString(@"UIScreen");
if ( screenClass != Nil)
{
id scale = [[screenClass mainScreen] valueForKey:@"scale"];
[(id)self setValue:scale forKey:@"contentsScale"];
}
}