【问题标题】:Grand Central Dispatch with Swift: Use of unresolved identifier GCD使用 Swift 的 Grand Central Dispatch:使用未解析的标识符 GCD
【发布时间】:2016-02-09 22:07:07
【问题描述】:

最近我拿起了Swift High Performance一书,并尝试了其中一个与 Apple 的 Grand Central Dispatch (GCD) 相关的示例。我将以下代码放在 Playground 文件中:

import Foundation
//import XCPlayground
//XCPSetExecutionShouldContinueIndefinitely()

class SalesData {

    var revenue: [Int]
    var average: Int?

    init (revenue: [Int]) {
        self.revenue = revenue
    }

    func calculateAverage() {

        let queue = GCD.backgroundQueue()
        dispatch_async(queue) {

        var sum = 0
        for index in self.revenue.indices {
            sum += self.revenue[index]
        }

        self.average = sum / self.revenue.count
    }
}

摘自:“Swift 高性能”。

但是,可以在attahced sceenshot 中看到 ,XCode 告诉我有一个Use of unresolved identifier GCD。知道我在这里缺少什么吗?

谢谢!

【问题讨论】:

  • 没有这样的类称为GCD。如果你想得到一个后台队列,你可以使用这个dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.rawValue), 0)
  • @Breek 有你的答案。随着 swift 的更新,您现在可以执行 dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)){ //code to run on background queue }

标签: swift swift2 grand-central-dispatch foundation


【解决方案1】:

在书中,他们定义了一个名为GCD 的结构,它提供了该方法。因此,您必须查看本书以获取示例所需的其余代码。

编辑:

这是本书提供的GCD 结构:

struct GCD {
    static func backgroundQueue() -> dispatch_queue_t {
        return dispatch_get_global_queue (QOS_CLASS_BACKGROUND, 0)
    }
}

它与问题中发布的示例出现在同一页面上。

【讨论】:

  • 哦,天哪,这太尴尬了……对我来说显然为时已晚:/。非常非常感谢你指出我应该很明显的事情。
  • @sbstnbelle 它发生在我们所有人身上。几乎每个程序员都有过花费一个小时(或一天,甚至更多!)来弄清楚如何解决一个被证明是微不足道的问题的经验。
  • @Gain 当然,在我们的职业生涯中,我们都至少经历过一次“眼泪谷”。然而,这个是多余和令人尴尬的之一;)。所以,更加感谢您的耐心和善意的帮助。我真的很感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2011-07-10
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多