在我的应用程序中,我使用此函数创建一个unsigned char指针:
- (unsigned char*)getRawData { // First get the image into your data buffer CGImageRef image = [self CGImage]; NSUInteger width = CGImageGetWidth(image); NSUInteger height = CGImageGetHeight(image); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); unsigned char *rawData = malloc(height * width * 4); NSUInteger bytesPerPixel = 4; NSUInteger bytesPerRow = bytesPerPixel * width; NSUInteger bitsPerComponent = 8; CGContextRef context = CGBitmapContextCreate(rawData,width,height,bitsPerComponent,bytesPerRow,colorSpace,kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); CGColorSpaceRelease(colorSpace); CGContextSetBlendMode(context,kCGBlendModeCopy); CGContextDrawImage(context,CGRectMake(0.0f,0.0f,(CGFloat)width,(CGFloat)height),image); CGContextRelease(context); // Now your rawData contains the image data in the RGBA8888 pixel format. return rawData; }
在另一个类中,我将一个属性分配给该指针,如下所示:self.bitmapData = [image getRawData];
在这个过程中我可以释放那个malloc内存吗?当我尝试在dealloc中释放属性时,它会给我一个exc_bad_access错误.我觉得我在这里缺少一个基本的c或objective-c概念.所有帮助表示赞赏.