使用ARC重新分配对象

时间:2013-02-02 21:33:52

标签: objective-c cocoa properties automatic-ref-counting

如果我在对象的init中创建了一个NSArray。

然后我想在同一属性中重新创建一个新的NSArray,我应该先将旧的NSArray设置为nil吗?

可以去......

self.arrayProperty = [[NSArray alloc] init];

或者我应该......

self.arrayProperty = nil;
self.arrayProperty = [[NSArray alloc] init];

(我只是为了这个例子而使用数组,但这是关于属性的一般问题)。

如果它有任何区别,那就是一个强大的财产。

2 个答案:

答案 0 :(得分:2)

第一种方法很好,在分配新对象之前,您不需要将其显式设置为nil,因为在保留和分配新对象之前,setter会释放属性的后备对象。你在MRC下会做什么(除了你不自动释放对象)。

答案 1 :(得分:2)

它与ARC一样,当没有更多对它的引用时,一个对象就会死掉。唯一的区别是,在第二个代码中,您正在进行无用的额外操作。