iOS/Swift中UIAlertController/UIAlertView的测试

4

我正在开发一个需要在iOS 7和8上运行的应用程序。如果可能的话,我想要使用UIAlertController,如果不行则退回到UIAlertView。

我使用了以下测试代码:

    let gotUIAlertController:AnyClass? = NSClassFromString("UIAlertController")
    if( gotUIAlertController != nil )
    {
        // Do UIAlertController
    }
    else
    {
        // DO UIAlertView
    }

这似乎可以在iOS8模拟器上运行,在调试模式下,但是当在发布模式下(或使用instruments运行调试模式时),gotUIAlertController不为空,因此UIAlertController正在尝试呈现并且应用程序崩溃。 部署目标为7.1,基本SDK设置为8.1

有人能告诉我为什么这段代码在iOS7.1上以这种方式执行吗?

1个回答

3

我不知道为什么,但我找到的解决方法是:

let gotUIAlertController: AnyObject? = objc_getClass("UIAlertController".UTF8String)
if( gotUIAlertController != nil ) {
    // Do UIAlertController
}
else {
    // DO UIAlertView
}

谢谢。时间限制导致我获取了系统设备信息并检查是否 >= 8.0这不太美观,但能胜任(目前)。我将在后续发布中采用你的方法。感谢你的建议。 - Fittoburst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接