2017-01-15 40 views
0

私のprevious questionでは、なぜ私のアプリケーションが早く終了したのか尋ねました。私はこの警告を以下の行の1つに載せており、それが私の問題を解決するのに役立つかもしれません。ここでコードは実行されません。

はコードです:

NSMutableArray *redValues = [NSMutableArray array]; 
NSUInteger redValuesLength = [redValues count]; 
float totalOne, diffForAverage; 
int amount = 1; 
__block int counter = 0; 
NSInteger j; 

GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; 
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; 

GPUImageAverageColor *averageColor = [[GPUImageAverageColor alloc] init]; 
[averageColor setColorAverageProcessingFinishedBlock:^(CGFloat redComponent, CGFloat greenComponent, CGFloat blueComponent, CGFloat alphaComponent, CMTime frameTime) 
{ 
    NSLog(@"%f", redComponent); 
    [redValues addObject:@(redComponent * 255)]; 
}]; 

[videoCamera addTarget:averageColor]; 
[videoCamera startCameraCapture]; 

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 27 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
    [videoCamera stopCameraCapture]; 
}); 

totalOne = [redValues[25] floatValue]; 
float average = totalOne/amount; 

for (j = (counter + 25); j < (redValuesLength - 25); j++) 
{ 
    diffForAverage = average - [redValues[j + 1] floatValue]; 

    if (diffForAverage > -1 && diffForAverage < 1) 
    { 
     totalOne += [redValues[j + 1] floatValue]; 
     amount++; 
     [arrayOne addObject:[NSNumber numberWithInt:(j - 25)]]; 
     counter++; 
    } 

    else 
    { 
     if (arrayOneLength >= 15) 
     { 
      break; 
      counter++; // WARNING OCCURS HERE 
     } 

     else 
     { 
      [arrayOne removeAllObjects]; 
      totalOne = [redValues[j + 1] floatValue]; 
      counter++; 
     } 
    } 
} 

はなぜ決して上記のコメント行が実行されるのでしょうか? forループ、if文、または完全に問題がありますか?

答えて

4

breakコマンドの直前にあるためです。 breakコマンドはただちにforループから抜け出し、次の行は実行されません。

+1

あなたの答えに感謝します。私は期限が過ぎるとそれを受け入れるでしょう。 – fi12

関連する問題