固定迭代次数后,Swift Playground协议崩溃

时间:2019-03-15 22:48:00

标签: ios swift protocols scenekit swift-playground

对于今年的WWDC奖学金,所需的格式是Swift游乐场。我在应用程序中构建游乐场,其中UITableViewCells中的滑块通过自定义委托连接到SCNScene,SCNNode和SCNParticleSystem。作为Mac上的应用程序运行时,它运行良好,但是在iPad上迅速运行的操场上运行时,委托方法在经过恒定的迭代次数后崩溃。我已经确定它不是节点本身中的方法,因为我做了这个print("Hello"),但仍然由于完全相同的96次迭代而崩溃。该节点位于源文件和主操场文件中。任何想法或帮助将不胜感激。

委托

protocol ReturnParameterDelegate {
    func parameter1(value: Float)
    func parameter2(value: Float)
    func defaultParameter(value: Float)
}

表格视图单元格

@objc private func returnValue() {
    guard let delegate = delegate else { return }
    print(self.parameter.title)
    switch self.parameter.title {
    case ParameterNames.parameter1:
        delegate.parameter1(value: self.slider.value)
    ...
    }
}

场景

public func parameter1(value: Float) {
    node.changeValue(value: value)
}
...

2 个答案:

答案 0 :(得分:1)

经过大量的工作并尝试了其他方法,我发现了一个简单的解决方案:将代码从主.playground移到.swift文件夹中的Sources文件中。虽然这不应该改变任何东西,但是将其添加到源代码中使我所有的方法都能完美地工作。这确实使协议变得复杂,但是我改为通过创建全局对象来代替它们。在经过一定数量的迭代后,它确实消除了崩溃,并且使某些其他函数无法运行(例如,更改diffuse的{​​{1}})。

答案 1 :(得分:0)

我将所有内容移至源文件。而且效果更好。