2014-11-05 59 views
0

下面的代码导致在Xcode IDE失败,并抛出swiftc分段错误(11):斯威夫特分段故障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的方法?即使以另一种方式编写测试也不得不做。

回答

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() } 

    // ... 
} 
+0

工程。但现在一些其他完全无关的代码导致swiftc崩溃与退出代码1与“全球是外部的,但没有外部或弱联动!”,哦... ... - – 2014-11-05 03:26:11