Array of implicitly unwrapped optionals iterates forever in Xcode 8 beta 4

我是研究僧i 提交于 2019-11-29 16:49:29
Hamish

This is a known bug, see SR-1635. Since an IUO is no longer a distinct type, it shouldn't really be possible to have an array of them in the first place.

This is confirmed by the fact that the following code fails to compile:

// compiler error: Implicitly unwrapped optionals are only allowed at top level.
// and as function results
var array: [Ink!] = []

(note I renamed your class name to Ink to conform to Swift naming conventions)

Depending on your situation, you may want to consider using a lazy property instead:

lazy var array : [Ink] = {

    var array = [Ink]()

    // populate array

    return array
}()

Or making the array itself an implicitly unwrapped optional (and defer both the allocation and initialisation of the array):

var array : [Ink]!

Although note that IUOs should always be a last resort due to their inherent unsafety.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!