iOS_Quartz2D_ 内存管理

Quartz 2D的内存管理

l1>使用含有“Create”或“Copy”的函数创建的对象,使用完后必须释放,否则将导致内存泄露.总结:凡是遇到retain, copy, create出的对象,都是需要进行release的.

l2>使用不含有“Create”或“Copy”的函数获取的对象,则不需要释放.

l3>如有retain了一个对象,不再使用时,需要将其release掉.

l4>可以使用Quartz 2D的函数来指定retain和release一个对象.也可以使用coreFoundation的CFRetain和CFRelease.注意不能传递NULL值给这些函数.

l5>演示通过CGMutablePathRef实现绘图.通过Product -> Analyze来进行静态分析.注意: CGPathCreatMutable()不是OC方法,所以不是调用某个对象的release方法.

//代码实现

------------------------------ HMRootView.m------------------------------

- (void)drawRect:(CGRect)rect

{

// 1.获取当前绘图上下文

CGContextRefctx =UIGraphicsGetCurrentContext();

// 2.创建画线的path对象

CGMutablePathReflinePath =CGPathCreateMutable();

// 2.1拼接路径

CGPathMoveToPoint(linePath,NULL,50,50);

CGPathAddLineToPoint(linePath,NULL,150,150);

CGPathAddLineToPoint(linePath,NULL,100,50);

// 2.2把路径添加到上下文对象中

CGContextAddPath(ctx, linePath);

// 3.创建一个画圆的路径

CGMutablePathRefcirclePath =CGPathCreateMutable();

// 3.1添加路径

CGPathAddArc(circlePath,NULL,150,150,50,0,M_PI*2,0);

// 3.2把路径添加到上下文中

CGContextAddPath(ctx, circlePath);

// 4.渲染上下文

CGContextStrokePath(ctx);

//CGPathRelease(circlePath);

//CGPathRelease(linePath);

//只要是Core Foundation中的对象,都可以直接通过下面的代码来释放。

CFRelease(linePath);

CFRelease(circlePath);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容