swift3 – 隐式解包的选项数组在Xcode 8 beta 4中永远迭代
发布时间:2020-12-14 05:33:48 所属栏目:百科 来源:网络整理
导读:我的代码(下面的片段)导致模拟器挂起. 我究竟做错了什么? 要重现问题,请剪切并粘贴到模拟器中. class INK{ var test = 1}var array = [INK!](repeating: nil,count: 1)for idx in 0..array.count{ array[idx] = INK()}var idx2 = 0for ink_item in array{ i
我的代码(下面的片段)导致模拟器挂起.
我究竟做错了什么? 要重现问题,请剪切并粘贴到模拟器中. class INK { var test = 1 } var array = [INK!](repeating: nil,count: 1) for idx in 0..<array.count { array[idx] = INK() } var idx2 = 0 for ink_item in array { idx2 += 1 print("idx2=(idx2)") }
这是一个已知的错误,请参阅
SR-1635.由于IUO是
no longer a distinct type,因此首先不可能有一个数组.
以下代码无法编译的事实证实了这一点: // compiler error: Implicitly unwrapped optionals are only allowed at top level. // and as function results var array: [Ink!] = [] (注意我将您的类名重命名为Ink以符合Swift命名约定) 根据您的具体情况,您可能需要考虑使用 lazy var array : [Ink] = { var array = [Ink]() // populate array return array }() 或者使数组本身成为一个隐式解包的可选项(并推迟数组的分配和初始化): var array : [Ink]! 虽然注意到由于他们的inherent unsafety,IOOO应该永远是最后的手段. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |