如果我在对象的init中创建了一个NSArray。
然后我想在同一属性中重新创建一个新的NSArray,我应该先将旧的NSArray设置为nil吗?
即
可以去......
self.arrayProperty = [[NSArray alloc] init];
或者我应该......
self.arrayProperty = nil;
self.arrayProperty = [[NSArray alloc] init];
(我只是为了这个例子而使用数组,但这是关于属性的一般问题)。
如果它有任何区别,那就是一个强大的财产。
答案 0 :(得分:2)
第一种方法很好,在分配新对象之前,您不需要将其显式设置为nil
,因为在保留和分配新对象之前,setter会释放属性的后备对象。你在MRC下会做什么(除了你不自动释放对象)。
答案 1 :(得分:2)
它与ARC一样,当没有更多对它的引用时,一个对象就会死掉。唯一的区别是,在第二个代码中,您正在进行无用的额外操作。