Код: Выделить всё
@discardableResult
public static func addPhysicsBody(to node: SCNNode, type: SCNPhysicsBodyType) -> SCNPhysicsBody {
// Here I use SCNPhysicsShape(node:) API
let shape = SCNPhysicsShape(node: node)
let body = SCNPhysicsBody(type: type, shape: shape)
node.physicsBody = body
return body
}
< /code>
Кажется, есть цикл удержания. Даже если я удаляю узел из родителей, узел все еще находится в памяти. < /P>
Однако, если я изменю код на: < /p>
@discardableResult
public static func addPhysicsBody(to node: SCNNode, type: SCNPhysicsBodyType) -> SCNPhysicsBody {
// Here I change to SCNPhysicsShape(geometry:) API
let shape = SCNPhysicsShape(geometry: node.geometry!)
let body = SCNPhysicsBody(type: type, shape: shape)
node.physicsBody = body
return body
}
< /code>
Это решает цикл удержания - после удаления узла из родителя, узел больше не в памяти. < /p>
Я подозреваю, что цикл сохраняется by scnphysicsshape (node: node) Однако я чувствую себя ошеломленным, что Apple не осознает такой очевидный цикл удержания, что заставляет меня сомневаться в себе. Я использовал API неправильно?
Подробнее здесь: https://stackoverflow.com/questions/793 ... hysicsbody