CGAffineTransform是否符合ARC?

时间:2013-03-31 09:31:16

标签: automatic-ref-counting cgaffinetransform

只是出于兴趣,ARC会处理这个问题,还是你必须释放变换?

UISlider *slider = [[UISlider alloc] init];
CGAffineTransform transform = CGAffineTransformMakeRotation (DEGREES_TO_RADIANS(90));
slider.transform = transform;

由于

1 个答案:

答案 0 :(得分:4)

没有什么能完全符合。 ARC是关于Objective-C引用计数(对象的内存管理)。 Core Foundation API是C. CGAffineTransform是C struct。 C结构不是引用计数,它们不能发送保留和释放等对象消息(它不会编译)。 这意味着必须在某处手动释放CGAffineTransform结构。 一个好处是,您可以创建它并仅在方法或函数中使用它,因此它的生命周期范围就是那个。 否则,您应该将其用作属性或ivar,因此将通过擦除对象实例来处理它。

无论哪种方式,只要以其中一种方式使用它,你应该没有任何花哨的担忧(除非你创造了很多这些) 如下所示,它不是很大......

struct CGAffineTransform {
   CGFloat a;
   CGFloat b;
   CGFloat c;
   CGFloat d;
   CGFloat tx;
   CGFloat ty;
};
typedef struct CGAffineTransform CGAffineTransform;

在C语言中,或者如果你有大量使用这些,你会开始想要做malloc()(或其中一个表兄弟)和free()