用于模式属性初始化的ARC模式

时间:2012-12-07 16:59:54

标签: ios automatic-ref-counting

当我第一次在ARC之前阅读开始iOS 3开发时,我记得在一些ViewController类中看到这样的模式:

.h
@property (nonatomic, retain) NSArray *myArray;

.m
in viewDidLoad:
NSArray *tempArray = [[NSArray alloc] init];
self.myArray = tempArray;
[tempArray release];

我记得你读过这样做,所以如果你使用属性setter / getters,属性可以为你处理内存。所以现在使用ARC,我想知道你是否仍然遵循这种变量创建。例如,如果您在iOS 6中启动一个新项目,在AppDelegate中,他们会

.h
@property (strong, nonatomic) ViewController *viewController;
.m
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

在这种情况下,不会创建临时变量。我想知道为什么以及我是否应该遵循这种模式而不是第一种模式。谢谢!

2 个答案:

答案 0 :(得分:0)

它们是相同的模式,除非现在ARC正确处理您的版本。 ARC的第二块代码就好了。这就是让ARC如此美好的原因。

答案 1 :(得分:0)

是的,你应该。 ARC会为您自动优化不必要的保留和释放。