我编译了libdispatch。此代码有效:
import Dispatch
var lockQueue = dispatch_queue_create("com.test.async", nil);
但是,如果我将此代码放在结束文件中:
dispatch_async(lockQueue) {
print("test1");
}
我收到一个错误:
使用未解析的标识符“dispatch_async”
我编译了libdispatch。此代码有效:
import Dispatch
var lockQueue = dispatch_queue_create("com.test.async", nil);
但是,如果我将此代码放在结束文件中:
dispatch_async(lockQueue) {
print("test1");
}
我收到一个错误:
使用未解析的标识符“dispatch_async”
正如我上面评论的,这似乎是Swift Package Manager 当前的限制。它目前不支持添加适当的编译时选项,例如支持将块作为 GCD 函数的输入所需的选项 ( -Xcc -fblocks
)。
同时,您可以避免使用 Swift 包管理器并使用 swiftc 直接编译您的文件,并使用适当的选项。sheffler 在他们的测试存储库中提供了一个示例:
swiftc -v -o gcd4 Sources/main.swift -I .build/debug -j8 -Onone -g -Xcc -fblocks -Xcc -F-module-map=Packages/CDispatch-1.0.0/module.modulemap -I Packages/CDispatch-1.0.0 -I /usr/local/include
这些-I
选项将拉入您的模块映射以用于 libdispatch,因此请调整它们以匹配您实际放置这些系统模块目录的位置。