[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