Swift SpriteKit println 崩溃

Swift SpriteKit println crash

我的第一个 SpriteKit 项目即将完成,所以我一直在阅读关于隐藏所有 println() 语句以供发布的最佳方法。我发现的最佳方法如此处所述 (Remove println() for release version iOS Swift)。

所以基本上我在全局范围内设置了自己的自定义 println 函数,就像这样

     func println(object: Any) {
Swift.println(object)
}

我还没有玩过 DEBUG Flag 自动执行的操作,现在我只是将第二行注释掉。它按预期工作,但我意识到它导致我的 IAP 出现一些问题,特别是它在这段代码中崩溃(并且在其他一些地方也会正常崩溃)。

     func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
    /* Payments */

    println("ADD PAYMENT")

    for transaction:AnyObject in transactions {
        var trans = transaction as! SKPaymentTransaction
        println(trans.error) //CRASH IS HERE

只要我删除这个全局 println 函数,它就不会再崩溃了。关于为什么会发生这种情况或是否有其他方法可以停止所有 printlns 的任何建议。显然我现在可以手动完成它,但它会有点痛苦,因为我喜欢我的 printlns。我将不胜感激任何提示和技巧。谢谢

这是您可以很好地重新格式化后使用的代码:

// 基本测试用例

    var transactions: [AnyObject] = [SKPaymentTransaction](count: 2, repeatedValue: SKPaymentTransaction() )
    transactions[1] = NSNull()

// 然后是函数的核心

    for transaction in transactions {
        if let trans = transaction as? SKPaymentTransaction {
            println(trans.error) // call Swift.println
        }
    }

现在 Swift 2+ 似乎已经解决了这个问题。