如何在SceneKit中清理节点材质漫反射内容内存?

时间:2017-10-17 16:46:43

标签: ios swift augmented-reality arkit scene

在我的一个应用中。我面临应用程序崩溃的问题,因为我无法清理节点材料漫反射内容的内存。当我正在尝试加载节点时,内存正在跟上,所以我希望每当从父节点删除节点时清除内存。请建议认可解决方案。

以下是我的代码:

let recomondationView = viewRecomodation as! THARRecomondationsView
planeGeoMetryP1.firstMaterial?.diffuse.contents = UIImage.imageWithView(view: recomondationView)
oldAnnotationNode.name = name
oldAnnotationNode.geometry = planeGeoMetryP1

let billboardConstraint = SCNBillboardConstraint()
billboardConstraint.freeAxes = SCNBillboardAxis.Y
self.constraints = [billboardConstraint]
self.addChildNode(oldAnnotationNode)

这是将UIView转换为UIImage的方法

extension UIImage {
    class func imageWithView(view: UIView) -> UIImage {
        var image = UIImage()
            UIGraphicsBeginImageContextWithOptions(view.frame.size, true, 1.0)
            let renderer = UIGraphicsImageRenderer(size: view.bounds.size)
            image = renderer.image { ctx in
                view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
            }
            UIGraphicsEndImageContext()
        return image
    }
}

以下是我用来从父

中删除节点的代码
if let index = self.sceneNode?.childNodes.index(of: locationNode) {
    self.sceneNode?.childNodes[index].geometry = nil
    self.sceneNode?.childNodes[index].removeFromParentNode()
}

0 个答案:

没有答案