[Openmcl-devel] Allocating temporary nsstrings

Raffael Cavallaro raffaelcavallaro at mac.com
Sat Mar 12 20:38:24 PST 2011


On Mar 12, 2011, at 9:52 PM, Ron Garret wrote:

> but I don't know how to stack allocate an instance of an ObjC class, or if that's even possible

As far as I know, all objective-c objects are heap allocated (although blocks are also technically objective-c objects and they're initially stack allocated for efficiency and only copied to the heap if necessary).

The objective-c idiom is autorelease pools combined with autorelease. Clozure CL has ccl::with-autorelease-pool, so just allocate your temporary objects and call autorelease on them inside the scope of a with-autorelease-pool form:

? (ccl::with-autorelease-pool
      (#/integerValue
       (let ((nsstr (#/autorelease (objc:make-nsstring "-12"))))
         (#/decimalNumberWithString: ns:ns-decimal-number nsstr))))
-12


warmest regards,

Ralph

Raffael Cavallaro
raffaelcavallaro at me.com








More information about the Openmcl-devel mailing list