## 5 Memory Management

We encourage the use of the following macros to ease retain and release and as a convenience for managing code which should work in both a garbage collecting and a retain counting environment.

- ASSIGN(object,value) to assign an object variable, performing the appropriate retain/release as necessary.
- ASSIGNCOPY(object,value) to copy the value and assign it to the object.
- DESTROY(object) to release an object variable and set it to nil.
- CREATE_AUTORELEASE_POOL(name) to create an autorelease pool with the specified name.
- IF_NO_GC(X) compile the code ’X’ only if GarbageCollection is not in use.