• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Questions on Sudden Termination, Automatic Termination, and (User Interface) Resume
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Questions on Sudden Termination, Automatic Termination, and (User Interface) Resume


  • Subject: Questions on Sudden Termination, Automatic Termination, and (User Interface) Resume
  • From: Daryle Walker <email@hidden>
  • Date: Sun, 14 Sep 2014 07:29:39 -0400

1. I added Sudden Termination to my app. I have a controller that watches a WebHistory instance for changes and the dirty flag is KVO-compliant. When the flag goes from non-dirty to dirty, my application delegate suspends Sudden Termination and calls the save-history method after a 60-second delay (with -performSelector: withObject: delay:, not an NSTimer). When the flag goes from dirty to non-dirty, my application delegate resumes Sudden Termination. (Note that any additional dirtying events that happen within a minute-delay period are incorporated with the save for the initiating dirtying.) Is this implicit balancing between suspend and resume OK?

I do not protect the function that saves the WebHistory store to disk, nor the export-data target-action; that’s supposedly OK since both of those are contained in a single function (each), which are called during the main thread.

2. I’m still trying to grok (user-interface) Resume, so I can get Automatic Termination going. Cocoa takes care of some of the work saving each window and its data (to some special Resume store), but I have to create overrides for my window and/or delegate and/or controller to save any associated data I defined (via NSCoder calls that the Cocoa’s Resume code uses). Right now, my controller class has a single -init method that starts up the window’s XIB. But it seems that the Resume code creates windows first, so I have to add alternate controller initializers that take in an existing window, right?

Cocoa’s Resume code takes care of any suspensions with Sudden Termination, I guess.

The explanation for Resume was per-window, but I have global state I need to add to Resume too. How? I load/save the WebHistory at app launch/quit, but I have a user default that controls it. Since Resume is supposed to get you back where you left off, I think I should save WebHistory in the Resume store even when the regular load/save preference is set to not save/load. (A Resume-based WebHistory still won’t get saved to the permanent History file.) Am I wrong here?

3. How do you test/debug Sudden and/or Automatic Termination, besides hoping the system triggers them? I got Sudden Termination by adding NSLog to the will-terminate notification. The log did not print only if I quit my app immediately after starting and without loading a web page. Quitting within a minute of loading a web page did print the log. But waiting after a minute (with another log message) still had the log for a normal quit. I think that although my code resumed Sudden Termination, NSUserDefaults probably didn’t due to caching.

—
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Prev by Date: Re: Why not use path-based API? (was: Loading image resources)
  • Next by Date: Re: Why not use path-based API? (was: Loading image resources)
  • Previous by thread: Re: Why not use path-based API? (was: Loading image resources)
  • Next by thread: Swift Compiler Bug?
  • Index(es):
    • Date
    • Thread