¿Necesita sincronizar standardUserDefaults después de llamar a registerDefaults?

El propósito de [standardUserDefaults sincronizar]; es hacer que los valores predeterminados del usuario se escriban en el disco de inmediato . No necesita llamarlo explícitamente, iOS ya lo hace en los momentos apropiados. Entonces puedes eliminar esa línea. De hecho, es un problema de rendimiento si llama a sincronizar cada vez que establece un valor predeterminado.

Antes de iOS 7, el usuario predeterminado siempre estaba sincronizado cuando la aplicación pasaba a segundo plano. A partir de iOS 7, ese ya no es el caso, por lo que es posible que desee llamar a sincronizar en la aplicación de delegado de su aplicaciónDidEnterBackground: o registrarse en la notificación UIApplicationDidEnterBackgroundNotification para hacerlo.

De la documentación para – [NSUserDefaults sincronizar]:

Debido a que este método se invoca automáticamente a intervalos periódicos, use este método solo si no puede esperar la sincronización automática (por ejemplo, si su aplicación está a punto de salir) o si desea actualizar los valores predeterminados del usuario a lo que está en el disco aunque No ha realizado ningún cambio.

No es necesario sincronizar los valores predeterminados del usuario alternativo, ya que, por definición, nunca se escriben en el disco, al menos según esta respuesta en StackOverflow:

¿Necesito registrarme por defecto: cada vez que se inicia la aplicación?

No lo he verificado yo mismo (todavía), pero tiene mucho sentido.