只是出于兴趣,ARC会处理这个问题,还是你必须释放变换?
UISlider *slider = [[UISlider alloc] init];
CGAffineTransform transform = CGAffineTransformMakeRotation (DEGREES_TO_RADIANS(90));
slider.transform = transform;
由于
答案 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()