我想为 iPhone 和 iPad 制作一款游戏。因此,从头开始将该项目作为通用应用程序是有意义的。然而,iPhone 和 iPad 目前运行两个不同版本的 iOS,因为 iOS 4 尚未适用于 iPad。我希望在我的游戏中支持两个 iOS 4 功能(GameCenter 和 iAd)。
- 在这种情况下,将此项目创建为通用应用程序是不是一个坏主意?
- 如果没有,在构建支持两个不同版本 iOS 的通用应用时,我应该考虑哪些想法?
- 押注苹果将如猜测的那样在秋季发布适用于 iPad 的 iOS 4 是否安全?
- 如果是这样,我是否可以开始将这些 iOS 4 功能(GameCenter 和 iAd)构建到我的 iPad 版本游戏中?
预先非常感谢您的智慧!
编辑:我了解这个问题涉及风险管理。我意识到其中的风险,但当 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、删除该检查并向商店发布更新。
关于iphone - 即使 iPad 尚未运行 iOS 4,我应该如何构建包含 iOS 4 功能的通用 iOS 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3320355/