dispatch_barrier_async can lead to inconsistent values when using mutable objects
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- objective-c
- Área
- devtools
Línea de trabajo
Comienza reproduciendo los casos reportados de registerDefaults y setObject:forKey: con el rendimiento del simulador habilitado y deshabilitado, y luego rastrea el manejo de dispatch_barrier_async. Se considera completado cuando las mutaciones siguen de forma coherente el comportamiento de NSUserDefaults, en lugar de depender del momento de la barrera o del modo de rendimiento.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
dispatch_barrier_async works great for this project, except for the following situation:
- NSMutableDictionary *registeredDefaults = [[NSMutableDictionary alloc] init];
- [[NSUserDefaults standardUserDefaults] registerDefaults:registeredDefaults];
- [registeredDefaults setObject:@"FOO" forKey:@"BAR"];
- NSObject *value = [[NSUserDefaults standardUserDefaults] objectForKey:@"BAR"];
- With sim performance ON, value may be equal to nil or equal to @"FOO" depending on if line 3 executed before the internal barrier_async block executed.
- With sim performance OFF, value is always equal to nil. Mutations after line 2 are not acknowledged.
The code above is incorrect anyways (you wouldn't expect it to work) -- but we still need to honor the behavior of NSUserDefaults. You could emulate this bug using -setObject:forKey: with a mutable object.
- Lenguaje dominante
- Objective-C
- Estrellas
- 40
- Forks
- 1
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Flipboard/NSUserDefaultsSimulatorPerformanceBoost
-
Add unit tests Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 20/100
Todos los issues de Flipboard/NSUserDefaultsSimulatorPerformanceBoost
Issues similares
-
Suzhou subway logo AbiertoIcons Metro Public Transport
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
organicmaps/organicmaps#13617 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
objective-see/LuLu#925 ·
-
macOS下查找brew::ncurse失败 Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
noah-nuebling/mac-mouse-fix#2054 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
obsproject/obs-studio#13918 ·