[cl-objc-devel] NSAutoreleasePool problem
Matthias Andreas Benkard
list-cl-objc-devel at mail.matthias.benkard.de
Wed May 7 11:23:43 UTC 2008
Hi,
2008/5/7 Jean-Philippe Barette-LaPierre <jpbarrette at gmail.com>:
> It seems that for hello-world example just using:
>
> (defparameter *pool* (invoke (invoke 'ns-autorelease-pool alloc) init))
>
> at the beginning is sufficient.
Yes, that should do the trick. Memory-management-wise, it's probably
not much better than letting all top-level objects leak, but I'm not
aware of any better way, either.
> objective-cl project seems to have some guidelines for this.
Objective-CL does essentially the same thing as above (albeit very
early on at initialisation time, as should be done; see
Objective-C/libobjcl.m, function objcl_initialise_runtime), but it
also automatically releases objects that are no longer used from the
Lisp side (that is, it integrates the Lisp GC with Objective-C's
reference counting scheme). Still, if you're writing a console app
using the Foundation framework, you'll need to manage autorelease
pools yourself, just as in Objective-C. There's no way around that,
as far as I can tell. On the other hand, if you're writing GUI
applications, AppKit is supposed to manage autorelease pools for you.
For details see:
http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Concepts/AutoreleasePools.html#//apple_ref/doc/uid/20000047-SW2
Hope this helps,
Matthias (Objective-CL maintainer)
More information about the Cl-objc-devel
mailing list