Swift 固定迭代次数后 Playground 协议崩溃
Swift Playground Protocol Crashing after Fixed Number of Iterations
对于今年的 WWDC 奖学金,要求的格式是 Swift 游乐场。我正在一个应用程序中构建我的游乐场,其中 UITableViewCells 中的滑块通过自定义委托连接到 SCNcene 和 SCNNode 以及 SCNParticleSystem。作为一个应用程序,运行 它在 Mac 上运行 运行 非常好,但是当涉及到 运行 时,它在 swift 游乐场上 [=23] =],委托方法在一定次数的迭代后崩溃。我已经确定它不是节点本身的方法,因为我做了这个 print("Hello")
并且它仍然因完全相同的 96 次迭代而崩溃。该节点已在源文件和主要游乐场文件中。任何想法或帮助将不胜感激。
代表
protocol ReturnParameterDelegate {
func parameter1(value: Float)
func parameter2(value: Float)
func defaultParameter(value: Float)
}
Table 查看单元格
@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)
}
...
经过数小时的工作并尝试使用其他方法,我找到了一个简单的解决方案:将代码从主 .playground
移动到 .swift
文件夹中的单独 Sources
文件.虽然这不会改变任何东西,但将它添加到源代码中可以使我的所有方法都能完美运行。这确实使协议复杂化,但是我用创建全局对象代替了它们。它确实在固定次数的迭代后消除了崩溃,并且它使某些以前没有的其他功能起作用(例如,更改 SCNNode
的 diffuse
)。
我将所有内容移至源文件。而且效果更好一点。
对于今年的 WWDC 奖学金,要求的格式是 Swift 游乐场。我正在一个应用程序中构建我的游乐场,其中 UITableViewCells 中的滑块通过自定义委托连接到 SCNcene 和 SCNNode 以及 SCNParticleSystem。作为一个应用程序,运行 它在 Mac 上运行 运行 非常好,但是当涉及到 运行 时,它在 swift 游乐场上 [=23] =],委托方法在一定次数的迭代后崩溃。我已经确定它不是节点本身的方法,因为我做了这个 print("Hello")
并且它仍然因完全相同的 96 次迭代而崩溃。该节点已在源文件和主要游乐场文件中。任何想法或帮助将不胜感激。
代表
protocol ReturnParameterDelegate {
func parameter1(value: Float)
func parameter2(value: Float)
func defaultParameter(value: Float)
}
Table 查看单元格
@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)
}
...
经过数小时的工作并尝试使用其他方法,我找到了一个简单的解决方案:将代码从主 .playground
移动到 .swift
文件夹中的单独 Sources
文件.虽然这不会改变任何东西,但将它添加到源代码中可以使我的所有方法都能完美运行。这确实使协议复杂化,但是我用创建全局对象代替了它们。它确实在固定次数的迭代后消除了崩溃,并且它使某些以前没有的其他功能起作用(例如,更改 SCNNode
的 diffuse
)。
我将所有内容移至源文件。而且效果更好一点。