The NSUserDefaults docs state: "NSUserDefaults caches the information to avoid having to open the user’s defaults database each time you need a default value."
Therefore it's no different to setting or getting an object from an in-memory dictionary variable.
However, calling [self.myDefault synchronize];
within a type loop would have a performance consequence, as this opens and writes to the defaults database on disk.