1

この関数を使用して、写真に特定の色のピクセルが含まれているかどうかを確認します。


     - (BOOL)imageHasOrange:(UIImage *)img
     {
           CGImageRef imageRef = img.CGImage;

    NSData *data = (__bridge NSData *)  CGDataProviderCopyData(CGImageGetDataProvider(imageRef));

           unsigned char *pixels = (unsigned char *)[data bytes];

           BOOL hasColor = NO;

           for(int i = 0; i < [data length]; i += 4)
           {
                if(pixels[i] == 255 && pixels[i+1] == 132 && pixels[i+2] == 0)
                {
                   hasColor = YES;
                   break;
                }
           }

           CFRelease(imageRef);

           return hasColor;

      }

Instrumentsを使用してメモリリークを追跡すると、CGDataProviderCopyData関数に関連していると言われました。

しかし、私はARCを使用しているので、「データ」配列を解放する必要はありませんか?

4

3 に答える 3

1
NSData *data = (__bridge_transfer NSData *)CGDataProviderCopyData(CGImageGetDataProvider(imageRef)); 
于 2014-03-04T04:52:02.887 に答える