1
我的问题是在下面的代码。我想了解当涉及到“无符号字符”指针时是否存在“保留”这样的事情。请解释。需要使用“无符号的字符”时,了解内存管理指向原始数据缓冲区
// MyObject.h
@interface myObject : NSObject {
unsigned char *myData;
}
// MyObject.m
-(void)makeNewData
{
if (myData) { free(myData); }
myData = [self createBitmapContextData:myCGImageRef];
//Here is my question: do I need a "retain" call equivalent on the next line?
//[myData retain];
}
- (unsigned char*)createBitmapContextData:(CGImageRef)fromImage
{
CGContextRef cgctx = [self createARGBBitmapContextFromImage:myCGImage];
if (cgctx == NULL) { return nil; }
size_t w = CGImageGetWidth(myCGImage);
size_t h = CGImageGetHeight(myCGImage);
CGRect rect = {{0,0},{w,h}};
CGContextDrawImage(cgctx, rect, myCGImage);
unsigned char* data = CGBitmapContextGetData (cgctx);
CGContextRelease(cgctx);
return data;
}
NSData的为原始缓冲区的对象的包装。会这样吗? – mackross 2011-02-10 23:53:37
@mackross可能,我只需要更多的帮助。比方说,我这样做:`NSData的* myNSData = [[NSData的页头] initWithBytes:数据长度:的sizeof(数据)];'我将如何访问与NSData的`数据[指数]`? – anna 2011-02-11 00:41:44