我即将完成我的第一个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所以会有点痛苦。我会很感激任何提示和技巧。谢谢
答案 0 :(得分:0)
以下是您可以使用的格式重新格式化的代码:
//基本测试用例
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
}
}
答案 1 :(得分:0)
现在用Swift 2 +解决了这个问题。