




 
The macro 
with-auto-release-pool
 creates a new autorelease pool and evaluates each 
form
 in sequence. The pool is released at the end, even if a non-local exit is performed by the 
form
s. An autorelease pool is provided automatically for the main thread when running CAPI with Cocoa, but other threads need to allocate one if they call Objective-C methods that use autorelease.
The 
"description"
 method returns an autoreleased NSString, so to make this function safe for use anywhere, the 
with-auto-release-pool
 macro is used:
(defun object-description (object)
(with-autorelease-pool ()
(invoke-into 'string object "description")))