0

それはうまくいっていますが、止まりません。

         [group enumerateAssetsAtIndexes:set options:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
          {
              CGImageRef imageRef = result.defaultRepresentation.fullResolutionImage;
              UIImage *toSend=[UIImage imageWithCGImage:imageRef];

              NSLog(@"INDEXX:%d",index); //logged after i stop !

              for(int c=0;c<[selectedButtonsTags count];c++)
                  if((numberOfAssets-1)-index ==[[selectedButtonsTags objectAtIndex:c] integerValue])
                  {[savedImages addObject:toSend];   NSLog(@"IMAGE IS:%@ index:%d",toSend,index); }


              if(index==numberOfAssets-max-1 )
              {   NSLog(@"OUT!");   //it DO log this !
                   *stop=YES;  
              }


          }];

をログに記録した後OUT、再度ログに記録しますindex:ガベージ number`

4

1 に答える 1

0

それがどのように機能するかを理解する必要がありました。私が彼を止める前にブロックで何かをすると、彼は列挙を続け、私が彼を止めると、彼はすでに次のインデックスを開始しています。

そのため、ブロックが始まったらすぐに彼を止めてから、次のことを行う必要があります。

          if(index==numberOfAssets-max-1 )
              *stop=YES; 

は今ブロックの開始点にあり、彼は停止します。後で関数を呼び出す必要がある場合は、同じ条件を後で指定できます。しかし、私が言ったように、まず彼を止めなければなりません。

于 2013-03-16T15:44:59.627 に答える