我注意到大多数人在初始化 CAShapeLayer
时使用:
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
而不是使用初始化器:
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
我想知道使用其中一种或通常更好的是有什么特别的差异?
第一个返回自我发行对象。由于它已被自动释放,因此您不是它的所有者。当Autorelease池(其居住在其中)释放时,该对象将自动为您发布。
第二个返回 1保留计数的对象。您是该对象的所有者,因此负责release
IT。但是 - 使用ARC,您可能不需要像我们那样致电release
。
相关链接:
- 目标C方法家庭
- 基本内存管理规则