我想为 iPhone 和 iPad 制作一款游戏。因此,从头开始将该项目作为通用应用程序是有意义的。然而,iPhone 和 iPad 目前运行两个不同版本的 iOS,因为 iOS 4 尚未适用于 iPad。我希望在我的游戏中支持两个 iOS 4 功能(GameCenter 和 iAd)。
- 在这种情况下,将此项目创建为通用应用程序是不是一个坏主意?
- 如果没有,当我构建一个支持两个不同版本的 iOS 的通用应用程序时,我应该考虑哪些想法?
- 押注苹果将如猜测的那样在秋季发布适用于 iPad 的 iOS 4 是否安全?
- 如果是这样,我是否可以开始将这些 iOS 4 功能(GameCenter 和 iAd)构建到我的 iPad 游戏版本中?
预先非常感谢您的智慧!
EDIT:我了解这个问题涉及风险管理。我意识到其中的风险,但我更感兴趣的是当 iOS 分散在各种 iOS 设备之间时,与构建通用应用程序相关的任何技术设计考虑因素。
如果您要构建通用应用程序,只需记住以下两个源代码片段:
-
仅当类在当前设备上可用时才使用它们
考虑这段代码:
UILocalNotification* n = [[UILocalNotification alloc] init];
构建通用应用程序时,此代码将导致在运行不了解 UILocalNotification 类的 iOS 版本的任何设备上出现运行时错误。
您仍然可以使用以下代码片段在代码中支持 UILocalNotification,同时保持向后兼容性:
Class notificationClass = NSClassFromString(@"UILocalNotification");
if (notificationClass) {
UILocalNotification* n = [[notificationClass alloc] init];
}
此技术允许您在支持类的设备上使用某些操作系统版本中不可用的类。
-
仅使用当前设备上可用的方法
假设您想要执行以下操作:
[[UIApplication sharedApplication] scheduleLocalNotification:n];
使用以下代码有条件地调用该方法(如果该方法在当前设备上可用):
if ([UIApplication instancesRespondToSelector:@selector(scheduleLocalNotification:)]) {
[[UIApplication sharedApplication] scheduleLocalNotification:n];
}
这两种技术可能是您创建通用应用程序时唯一需要了解的事情。根据设备功能有条件地执行您的代码,应该没问题。
话虽如此,您仍然需要考虑 iPad 可能会使用与 iPhone 版本不同的 UI。而且,不幸的是,在 iOS 4 功能在 iPad 上可用之前,您将无法使用 iOS 4 功能测试您的 iPad UI。但这应该不是什么太大的问题:如果你使用[[UIDevice currentDevice] userInterfaceIdiom]
要检查您是否在 iPad 上运行,您可以阻止通用应用程序执行尚无 iPad UI 的代码。 Apple 发布适用于 iPad 的 iOS 4 后,您可以实施 UI、删除该检查并向商店发布更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)