¿Por qué no ALAssetLibrary -enumerateGroupsWithTypes: usingBlock: "stop" cuando lo digo?

Noté que aunque establecía el puntero *stop BOOL en YES , mi bloque de enumeración se ejecuta dos veces. Pensé que la configuration *stop = YES se detendría después de la primera?

 [lib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) { NSLog(@"Enumerating a group"); //should stop after first? *stop = YES; } failureBlock:^(NSError *error) { }]; 

Los loggings:

 2014-03-05 12:27:29:363 AppName[3625:1547] Enumerating a group 2014-03-05 12:27:29:379 AppName[3625:1547] Enumerating a group 

De la documentation, -enumerateGroupsWithTypes:usingBlock: es asynchronous, pero ¿también se paraleliza automáticamente? Ambas enumeraciones suceden en el hilo principal, así que tal vez debería hacer cumplir mi propia parada. Parece extraño ofrecer stop si no se aplica exactamente de la manera que sugiere la documentation.

EDITAR

Por lo que vale, agregué mi propia aplicación y funciona. ¿Pero por qué necesito hacer esto?

     __bloque BOOL stopItForReal = NO;
     [lib enumerateGroupsWithTypes: ALAssetsGroupSavedPhotos usingBlock: ^ (grupo ALAssetsGroup *, BOOL * stop) {
         NSLog (@ "Enumerar un grupo");

         // no se detiene la enumeración
         * stop = SÍ;

         // en realidad detiene la enumeración.  ¡Gano, time de ejecución! 
          si (stopItForReal) 
              return; 
          stopItForReal = SÍ;

     } failureBlock: ^ (error NSError *) {
     }];

Cuando finaliza la enumeración de grupos, se invoca ALAssetsLibraryGroupsEnumerationResultsBlock con group = nil . Entonces puedes escribir algo como:

 if (group != nil) { // your code. }