由于范围可变,Swift分段故障11

时间:2014-11-05 01:45:07

标签: ios xcode swift segmentation-fault xcode6

以下代码导致Xcode中的IDE失败,swiftc抛出分段错误(11):

func testDeviceWillNotify()
{
    let expectation = expectationWithDescription("Will be ready.")

    class FooMock: Foo
    {
        func accessoryDidConnect()
        {
            expectation.fulfill()
        }
    }

    // ...
}

如果我注释掉expectation.fulfill(),一切正常。我还尝试了expectation!expectation?,但是对expectation的任何引用都会导致Xcode崩溃。

使用Xcode 6.1(6A1052d)并且非常令人沮丧。有没有人知道解决这个bug的方法?即使以另一种方式编写测试也必须这样做。

1 个答案:

答案 0 :(得分:0)

我不知道你的代码如何工作,因为内部类必须自动捕获方法范围中的变量。

这是一种解决方法

class FooMock: Foo
{
    var accessoryDidConnectFunc : (Void -> Void)?
    func accessoryDidConnect()
    {
        accessoryDidConnectFunc ?()
    }
}

func testDeviceWillNotify()
{
    let expectation = expectationWithDescription("Will be ready.")

    let foo = FooMock()
    foo.accessoryDidConnectFunc = { expectation.fulfill() }

    // ...
}