以下代码在使用Swift 3和Xcode 8进行编译时导致错误:

import Foundation

public typealias IntCompletion = (Int) -> Void
public typealias FetchIntBlock = (IntCompletion) -> Void

class ATSwiftTest<T: NSURL>: NSObject {

    var fetchIntBlock: FetchIntBlock

    override init() {
        fetchIntBlock = { (aFunc) in }

        super.init()
    }
}

通过消除的过程,我能够找出问题是由嵌套函数声明引起的。
var fetchIntBlock: FetchIntBlock
代码也会使Playground编译器崩溃。

有什么办法欺骗编译器吗?

最佳答案

我刚刚发现,如果我将fetchIntBlock var设为私有(private),则代码可以很好地编译。

var公开仍然很好。

09-07 18:11