1
你好,即時消息非常新的與SceneKit和ARKit一起工作,所以也許它是一個基本問題。在我的ARKit應用程序中,我試圖從一個點向一個方向連續拍攝一些火箭。因此,我寫了這個功能:removeFromParentNode不釋放ARKit中的內存應用程序
@objc func shootRocket() {
guard let cameraTransform = session.currentFrame?.camera.transform else {
return
}
let rocket = VirtualObject(definition: VirtualObjectManager.availableObjects[VirtualObjectManager.availableObjects.count - 1])
let rocket_pos = float3(x: position.x, y: position.y+0.144, z: position.z-0.66)
virtualObjectManager.loadVirtualObject(rocket, to: rocket_pos, cameraTransform: cameraTransform)
if rocket.parent == nil {
serialQueue.async {
self.sceneView.scene.rootNode.addChildNode(rocket)
let moveaction = SCNAction.move(by: SCNVector3(0,0,-10), duration: 5)
rocket.runAction(moveaction) {
rocket.removeAllActions()
rocket.removeAllAnimations()
rocket.removeFromParentNode()
}
}
}
}
而且我調用這個函數是這樣的:
if object.parent == nil {
serialQueue.async {
self.sceneView.scene.rootNode.addChildNode(object)
}
let timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.shootRocket), userInfo: nil, repeats: true)
...
}
一切正常,只是我的內存使用量每單杆後和幾個越來越大拍攝應用程序崩潰。
雖然函數removeFromParentNode()在被調用時釋放了一些內存,但看起來不像。
那麼這裏有什麼問題?