---
title: "taggedRelease(const void *, const int)"
framework: kernel
role: pseudoSymbol
path: kernel/osobject/1941157-taggedrelease
---

# taggedRelease(const void *, const int)

Releases a tagged reference to an object, freeing it immediately if the reference count drops below the specified threshold.

## Declaration

```occ
virtual void taggedRelease(
 const void *tag,
 const intfreeWhen) const; 
```

## Parameters

- `tag`: Used for tracking collection references.
- `freeWhen`: If decrementing the reference count makes it >= freeWhen, the object is immediately freed.

## Overview

Overview Kernel extensions should not use this function. It is for use by OSCollection and subclasses to track inclusion in collections. If the receiver has freeWhen or fewer references after its reference count is decremented, it is immediately freed. This version of release can be used to break certain retain cycles in object graphs. In general, however, it should be avoided.

## See Also

### Miscellaneous

- [free](kernel/osobject/1941146-free.md)
- [getRetainCount](kernel/osobject/1941147-getretaincount.md)
- [init](kernel/osobject/1941148-init.md)
- [operator delete](kernel/osobject/1941149-operator_delete.md)
- [operator new](kernel/osobject/1941150-operator_new.md)
- [release()](kernel/osobject/1941151-release.md)
- [release(int)](kernel/osobject/1941153-release.md)
- [retain](kernel/osobject/1941154-retain.md)
- [serialize](kernel/osobject/1941155-serialize.md)
- [taggedRelease(const void *)](kernel/osobject/1941156-taggedrelease.md)
- [taggedRetain](kernel/osobject/1941158-taggedretain.md)
