[Pythonmac-SIG] question about garbage collection with NSApplication.run()
Bill Janssen
janssen at parc.com
Mon Jun 1 17:16:05 CEST 2009
Thanks, Ronald.
Bill
Ronald Oussoren <ronaldoussoren at mac.com> wrote:
>
> On 31 May, 2009, at 20:34, Bill Janssen wrote:
>
> > I'm writing a Python program that has a main that looks like this:
> >
> > application = NSApplication.sharedApplication()
> >
> > # set up handler for network change notification
> > SCDynamicStoreSetNotificationKeys(DYNSTORE, None,
> > [NETWORK_KEY,])
> > # Get a CFRunLoopSource for our store session and add it to
> > the application's runloop:
> > CFRunLoopAddSource(
> > NSRunLoop.currentRunLoop().getCFRunLoop(),
> > SCDynamicStoreCreateRunLoopSource(None, DYNSTORE, 0),
> > kCFRunLoopCommonModes
> > )
> >
> > # add a timer for application scan events
> > timer = NSTimer
> > .scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_(
> > periodicity, scanner, objc.selector(scanner.scan,
> > signature="v@:"), None, True)
> >
> > # using an NSRunLoop avoids Activity Monitor complaining
> > about "not responding"
> > application.run()
> >
> > Do I need to do anything about NSAutoreleasePools? My understanding
> > is
> > that this is single-threaded, and that NSApplication.run will handle
> > periodic drainage of the default main thread release pool.
>
> That's right. NSApplication.run manages the the pool for you. You only
> have to worry about autorelease pools when you create new threads
> running Cocoa code, and when you a long time without looping through
> the eventloop.
>
> Ronald
>
More information about the Pythonmac-SIG
mailing list