---
title: "program(_:unbindValueForSymbol:atLocation:programID:renderer:)"
framework: scenekit
role: symbol
role_heading: Instance Method
path: "scenekit/scnprogramdelegate/program(_:unbindvalueforsymbol:atlocation:programid:renderer:)"
---

# program(_:unbindValueForSymbol:atLocation:programID:renderer:)

Invoked on the delegate to let it unbind program values and/or also unbind associated graphic resources (such as textures).

## Declaration

```swift
optional func program(_ program: SCNProgram, unbindValueForSymbol symbol: String, atLocation location: UInt32, programID: UInt32, renderer: SCNRenderer)
```

## Parameters

- `program`: The SCNProgram object to unbind values for.
- `symbol`: The name of the symbol to unbind a value for.
- `location`: The location of the symbol within the program object to be modified.
- `programID`: The underlying OpenGL program object in which the unbinding is done.
- `renderer`: The renderer that is currently rendering the scene.

## Discussion

Discussion If you use the handleUnbinding(ofSymbol:handler:) method to associate a handler block with a SceneKit object for a symbol, SceneKit will not call the delegate’s program(_:unbindValueForSymbol:atLocation:programID:renderer:) method for that symbol when rendering that object.

## See Also

### Binding and Unbinding Values

- [program(_:bindValueForSymbol:atLocation:programID:renderer:)](scenekit/scnprogramdelegate/program(_:bindvalueforsymbol:atlocation:programid:renderer:).md)
