[[CAShapeLayer alloc] init]和[CAShapeLayer层]之间的区别

时间:2012-11-10 14:54:31

标签: iphone ios cocoa-touch graphics core-graphics

我注意到大多数人在初始化CAShapeLayer时使用:

CAShapeLayer *shapeLayer = [CAShapeLayer layer];

而不是使用初始化程序:

CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];

我想知道使用这些中的任何一个有什么特别的区别,或者哪个通常更好?

1 个答案:

答案 0 :(得分:4)

第一个返回一个自动释放的对象。由于它是自动释放的,因此您不是它的拥有者。

,当自动释放池(它所在的位置)被释放时,该对象将自动释放

第二个返回一个具有+1保留计数的对象。您是该对象的所有者,因此对release负责。但是 - 使用ARC,您可能不需要像我们那样拨打release

相关链接:

  1. Objective C Method Families
  2. Basic Memory Management Rules