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