Я пытаюсь написать обычай timingFunction
для SCNAction
в проекте Swift. Предполагается, что он имеет подпись (Float) -> Float
и возвращает значение от 0,0 до 1,0. Но независимо от того, какое значение я верну, приложение всегда будет терпеть крах с EXC_BAD_ACCESS, заявив, что «ошибка: ошибка чтения памяти для 0xd0000000», когда действие выполняется.SceneKit на iOS: сбой с функцией синхронизации написан в Swift
Это самая основная функция, которую я мог придумать, чтобы продемонстрировать проблему:
var action = SCNAction.moveByX(0, y: 100, z: 0, duration: 1)
action.timingFunction = { time in
return time
}
someSCNNode.runAction(action)
Тот же самый код в Objective-C работает просто отлично.
Я тестировал это с помощью iOS 8.0.1, 8.0.2 и 8.1b2 с несколькими устройствами и симуляторами. Я делаю что-то неправильно здесь или это ошибка Swift?
Спасибо, что подтвердили это. Я сделал ошибку 2 недели назад, но она не была исправлена в iOS 8.1. Я работал над проблемой, используя класс Objective-C, который предоставляет функции синхронизации для моего кода Swift через мостовой заголовок. –