【问题标题】:How do I detect Grand Central Dispatch feature support on an iPhone?如何检测 iPhone 上的 Grand Central Dispatch 功能支持?
【发布时间】:2011-12-02 00:16:23
【问题描述】:

我开始想测试或检测 iOS 是否是 4.x 版,这样我就知道我可以使用 Grand Central Dispatch 来运行并发线程。如果它低于 iOS 4,我会运行代码,但不会作为线程运行并接受打击。但是在阅读堆栈溢出时,我阅读了-

---- "你应该完全避免询问系统版本。 更好的设计会询问特定功能。例如: if (NSClassFromString(@"UIPrintInfo")) 会告诉您当前设备是否支持打印 API,在 4.2 或更高版本中可用。这样,您可以计划代码以使用可用的功能,而不是基于操作系统版本。”

这是有道理的。因此,我将使用什么代码安全方法来检测 Grand Central Dispatch 支持,而不是测试 iOS 4?

【问题讨论】:

    标签: objective-c ios4 grand-central-dispatch


    【解决方案1】:

    您可以通过将函数与 NULL 进行比较来检查函数在运行时是否存在,如下所示:

    if (dispatch_async != NULL) {
        NSLog(@"We have GCD");
    }
    else {
        NSLog(@"We don't have GCD");
    }
    

    注意:我还没有实际测试过。

    【讨论】:

    • 这是一个有趣的想法。我的手机上有iOS4,我想知道如何测试它。我希望我可以将模拟器调到 3.x,但至少我的没有提供。任何人都可以确认这可能是一种可行的技术吗?听起来不错。
    • 用“if (&dispatch_async != NULL)”代替“if (dispatch_async != NULL)”怎么样?我认为检查指向函数的指针是否为空应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2011-07-28
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多