El contenido de UIDocument loadFromContents está dañado EXC_BAD_ACCESS?

He estado teniendo este problema por días tratando de resolverlo, sin suerte.

Tengo un documento UID que se sincroniza en iCloud, aquí están los methods

- (id)contentsForType:(NSString *)typeName error:(NSError *__autoreleasing *)outError { NSMutableData *data = [NSMutableData data]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeObject:name forKey:@"name"]; [archiver encodeObject:note forKey:@"note"]; [archiver finishEncoding]; return data; } - (BOOL)loadFromContents:(NSData *)contents ofType:(NSString *)typeName error:(NSError *__autoreleasing *)outError { NSLog(@"%@", [contents bytes]); NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:contents]; name = [unarchiver decodeObjectForKey:@"name"]; note = [unarchiver decodeObjectForKey:@"note"]; [unarchiver finishDecoding]; return YES; } 

Como puede ver, hago un NSLog sobre los contenidos, la mayoría de las veces, todo está bien. Y se carga correctamente, sin embargo, cuando los datos están corruptos, obtengo EXC_BAD_ACCESS incluso haciendo solo NSLog.

De alguna manera, los datos en el contenedor de ubicuidad se corrompen, sin embargo, no se extiende a los otros dispositivos, todos los demás dispositivos cargarán el contenido bien. Al eliminar la aplicación del dispositivo no se soluciona. Solo si recupero el documento en otro dispositivo, termina funcionando. Estoy usando ARC por lo que no debería ser el problema. He comprobado la NSURLUbiquitousItemIsDownloadedKey que devuelve verdadero.

Obviamente, quiero averiguar qué está causando la corrupción en primer lugar, pero ¿cómo puedo saber si los datos no son válidos para que la aplicación no se bloquee?