[Pythonmac-SIG] question about garbage collection with NSApplication.run()

Ronald Oussoren ronaldoussoren at mac.com
Mon Jun 1 08:56:02 CEST 2009


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2224 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/pythonmac-sig/attachments/20090601/31832124/attachment.bin>


More information about the Pythonmac-SIG mailing list