我想使用 EventKit 将日历集成到我的 iPhone 和 iPad 应用程序中。但是,当我包含此代码(例如使用 MonoTouch.EventKit)时,该应用程序将无法在我的 OS 3.x 设备(iPod touch 2G)上运行。
有没有办法在 MonoTouch 中构建应用程序,并且仍然将最低操作系统版本设为 3.0,但同时支持 iOS 4 和 EventKit?如何在不中断对 3.0 设备的支持的情况下为 iOS 4 设备包含 EventKit 功能?
谢谢
我想使用 EventKit 将日历集成到我的 iPhone 和 iPad 应用程序中。但是,当我包含此代码(例如使用 MonoTouch.EventKit)时,该应用程序将无法在我的 OS 3.x 设备(iPod touch 2G)上运行。
有没有办法在 MonoTouch 中构建应用程序,并且仍然将最低操作系统版本设为 3.0,但同时支持 iOS 4 和 EventKit?如何在不中断对 3.0 设备的支持的情况下为 iOS 4 设备包含 EventKit 功能?
谢谢
正如 bosmacs 所提到的,要做到这一点,您需要让 MonoTouch 知道您需要“弱”链接到 EventKit 框架。弱绑定确保框架仅在第一次需要框架中的类时按需加载。
为此,您应该采取以下步骤:
除此之外,您还需要保护您对这些类型的使用,以免它们在可能不存在的旧版本 iOS 上运行。有几种方法可以实现这一点,但其中之一是解析 UIDevice.CurrentDevice.SystemVersion。
您应该能够弱链接 EventKit 框架,然后在运行时检查您需要的类是否存在。另请参阅:通用应用程序 (OS3.2) 中的 EventKit 、iPhone 检查是否存在 AVCaptureSession 类以及如何在兼容 2.0 的应用程序中选择使用 iPhone OS 3.0 功能?
通过将项目设置中的部署目标设置为 3.0,但针对 4.x SDK 进行编译,应该为您处理好弱链接方面的问题。