In the same way that autorelease doesn’t occur until all of the current events and functions have been completed for your application, although the window and it’s object may be marked to be re-drawn it will not occur until the application returns to the background run loop.  At this point the OS checks to see if anything need’s to be re-drawn.