我很难在Objective-C中释放内存。我也是新手。请帮助我。
PFB示例代码...请告诉我在此代码中我必须释放的是什么:
CGImageRef cgiRef = [uiiInputImage CGImage];
CGImageRef cgiNewRef = CGImageCreateWithImageInRect(cgiRef, cgrRegionInfo);
uiiTargetTemp = [UIImage imageWithCGImage:cgiNewRef];
UIImage *uiiOutputImage = uiiTargetTemp;
uiiTargetTemp = nil;
请尽快帮助。
另外,我在哪里可以找到有关在Objective-C
中分配,分配和释放对象的流程的文档答案 0 :(得分:0)
准确回答你的问题:
CGImageRef cgiRef = [uiiInputImage CGImage];
CGImageRef cgiNewRef = CGImageCreateWithImageInRect(cgiRef, cgrRegionInfo);
uiiTargetTemp = [UIImage imageWithCGImage:cgiNewRef];
UIImage *uiiOutputImage = uiiTargetTemp;
uiiTargetTemp = nil;
CGImageRelease(cgiRef); //added
//....
//later on sometime you need to release the following
[uiiInputImage release];
[uiiOutputImage release];
CGImageRelease(cgiNewRef);
从这个片段来看,通过阅读Apple提供的初学者资源,您将获得良好的服务。除了@Swapna提供的资源之外,我还建议The Objective-C Programming Language: Introduction和Memory Management Programming Guide: Introduction。一本好书还是两本也不能伤害。 ;)
答案 1 :(得分:0)
CGImageRef cgiRef = [uiiInputImage CGImage];
CGImageRef cgiNewRef = CGImageCreateWithImageInRect(cgiRef, cgrRegionInfo);
uiiTargetTemp = [UIImage imageWithCGImage:cgiNewRef];
UIImage *uiiOutputImage = uiiTargetTemp;
uiiTargetTemp = nil;
CGImageRelease(cgiNewRef);
您必须释放从CGImageCreateWithImageInRect收到的内容,因此CGImageRelease。
这是不完整的。我对imageWithCGImage返回的引用有一些疑问,我们是否应该发布它。文档不清楚。
返回值
指定的新图像对象 Quartz图像,如果是方法则为nil 无法初始化图像 指定的图像参考。
<强>讨论强>
此方法不会缓存图像 宾语。你可以使用的方法 核心图形框架创建一个 石英图像参考。