Swift中的静态初始化程序是否存在内在大小限制?

时间:2014-12-24 16:03:02

标签: swift

在类中,我有类变量,由具有静态成员的结构模拟,如下所示:

internal class DEAccountCheck : AccountCheck {

  private struct Static {
    static var methodParameters: [String: (UInt16, [UInt16])] = [ // Modulus + weights indexed by method id.
      "00": (10, [2, 1, 2, 1, 2, 1, 2, 1, 2]),
      "01": (10, [3, 7, 1, 3, 7, 1, 3, 7, 1]),
      "02": (11, [2, 3, 4, 5, 6, 7, 8, 9, 2]),
      "03": (10, [2, 1, 2, 1, 2, 1, 2, 1, 2]),
      ...
    ]
  }

methodParameter字典有超过200行(条目)。如果我运行我的应用程序,我得到一个EXC_BAD_INSTRUCTION异常,调试器停在我的静态初始化程序的中间。当它开始发生时我检查了它,发现我最多可以有172个值。还有一个:噗。

由于我可以通过普通代码成功添加所有条目,因此如果静态初始化器存在一些已知限制,则会出现问题。

1 个答案:

答案 0 :(得分:1)

事实证明,异常来自重复密钥,这是不允许的。如果Swift中的错误消息更加用户友好,那么问题就会变得容易得多。 Swift中的ATM错误消息非常糟糕。