以下代码在使用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公开仍然很好。