iPhone中的内存问题

时间:2011-05-02 05:00:43

标签: ios cocoa-touch memory-management

我很难在Objective-C中释放内存。我也是新手。请帮助我。

PFB示例代码...请告诉我在此代码中我必须释放的是什么:

   CGImageRef cgiRef = [uiiInputImage CGImage];
   CGImageRef cgiNewRef = CGImageCreateWithImageInRect(cgiRef, cgrRegionInfo);
   uiiTargetTemp = [UIImage imageWithCGImage:cgiNewRef];
   UIImage *uiiOutputImage = uiiTargetTemp;
   uiiTargetTemp = nil;

请尽快帮助。

另外,我在哪里可以找到有关在Objective-C

中分配,分配和释放对象的流程的文档

2 个答案:

答案 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: IntroductionMemory 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   无法初始化图像   指定的图像参考。

     

<强>讨论

     

此方法不会缓存图像   宾语。你可以使用的方法   核心图形框架创建一个   石英图像参考。

..请参阅thisthis主题讨论它。This是关于内存管理的苹果官方文档,this教程很有用..