此代码不起作用。它会导致分段错误。用变量初始化变量的全部内容!代替 ?是这样我可以使用它自动解开自己。为什么会这样?
var isFoo: Bool!
override func viewDidLoad() {
super.viewDidLoad()
isFoo = true
print(getNumber())
}
func getNumber() -> Int {
return isFoo ? 1 : 0
}
相反,我必须写:
func getNumber() -> Int {
return isFoo! ? 1 : 0
}
最令人讨厌的是编译器只会给我一个Segmentation故障:11,它让我调试了一个多小时,得出结论这是引入错误的地方。在我尝试编译之前,它没有认识到代码有什么问题。我错过了什么吗?
答案 0 :(得分:0)
最小的工作示例。
这给了我现在的问题:
var isFoo: Bool?
func getNumber() -> Int {
return isFoo! ? 1 : 0
}
isFoo = true
print(getNumber())
这使编译器与消息While emitting SIL for 'getNumber'
(也崩溃的SourceKit)崩溃了:
var isFoo: Bool!
func getNumber() -> Int {
return isFoo ? 1 : 0
}
isFoo = true
print(getNumber())
对我来说看起来像编译器错误。看起来像此提案中引入的错误:Abolish ImplicitlyUnwrappedOptional type
答案 1 :(得分:-2)
我在操场上试了这个,它也在那里坠毁了。有趣的是,Playground实际上让我提交错误报告!我将... ...
现在,几个月后,我收到Apple的回复,要求我使用最新的XCode 9.3 Beta进行测试。我做到了,这个错误似乎已得到解决。