升级到swift 1.2会阻止我编译。错误不显示在文件内部,但它是一般编译错误消息。
记录编译文本,我能够在特定文件上发现此错误:
Global is external, but doesn't have external or weak linkage!
invalid linkage type for function declaration
LLVM ERROR: Broken module found, compilation aborted!
这是文件的内容,你知道导致错误的原因是什么:
import Foundation
class appDisabled {
func check(currentViewController: UIViewController, isLoginScreen: Bool) {
var disabledStatus: Bool? {
didSet {
if let result = disabledStatus {
if result == true && isLoginScreen == false{
currentViewController.performSegueWithIdentifier("unwindToLoginScreen", sender: nil)
}
}
}
}
PFConfig.getConfigInBackgroundWithBlock {
(config: PFConfig!, error: NSError!) -> Void in
if error == nil {
disabledStatus = config["appDisabled"] as? Bool
if disabledStatus! == true {
appStatus.isAppDisabled = true
} else {
appStatus.isAppDisabled = false
}
}
}
}
}
删除第二个功能块PFConfig.getConfigInBackgroundWithBlock ...允许编译通过,所以我不确定是否是导致问题的块本身,或者与上面的变量观察者的关系。 您是否看到此代码的任何部分可能触发编译器错误?
答案 0 :(得分:2)
我认为导致此问题的一行是:
if disabledStatus! == true {
看起来他们是Swift中访问闭包中的局部变量的错误
https://gist.github.com/NeoTeo/545128f724cd47d84ee1
这是一个简化的测试用例:
func immediateFunction(function: () -> ()) {
function()
}
class myClass {
func check() {
var disabledState: Bool? {
didSet {
println("Did set")
}
}
immediateFunction() {
disabledState = true
if disabledState! == true {
println("Not crashing anymore")
}
}
}
}