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

后端 未结 1 826
陌清茗
陌清茗 2020-12-22 03:44

My code (fragment below) causes the Simulator to Hang. What am I doing wrong?

To reproduce the problem, cut and paste into the Simulator.

class INK
{         


        
1条回答
  •  生来不讨喜
    2020-12-22 03:56

    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.

    0 讨论(0)
提交回复
热议问题