全球是外部的,但没有外部或弱联系

时间:2015-04-09 15:20:44

标签: ios swift

升级到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 ...允许编译通过,所以我不确定是否是导致问题的块本身,或者与上面的变量观察者的关系。 您是否看到此代码的任何部分可能触发编译器错误?

1 个答案:

答案 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")
            }
        }
    }
}