I don't know if I'm imagining things, but testing my code right now I find that the culprit could be user.defaults doesn't write fast enough?
I find that it takes around three to five seconds for the write to reliably work, which is odd as I recall the information at the time it will display correctly as having been changed, but resetting the simulator the data hasn't, if I do it one second after for example.
I take it then that NSUserDefaultsDidChangeNotification would be useless as the data will show as having been saved, while in practice if I rebuild the code on the simulator it will not have had time to save.
In normal use this would not be a problem, but testing takes so much time I wanted to speed things up and it's been driving me mad as I know my code to be sound. I know that Plists take time to work, so I think it's just the speed ?