在一些代码,我有时会看到这一点:是否需要删除指定的变量?
@property (nonatomic, assign) NSObject *foo;
...
-(void)dealloc
{
self.foo = nil;
...
}
真的有必要到零的对象时,它并没有被保留下来?这不会造成问题吗?
在一些代码,我有时会看到这一点:是否需要删除指定的变量?
@property (nonatomic, assign) NSObject *foo;
...
-(void)dealloc
{
self.foo = nil;
...
}
真的有必要到零的对象时,它并没有被保留下来?这不会造成问题吗?
将不再感兴趣的指针设置为零是一种很好的做法。我不主张在-dealloc
中使用像这样的访问器,因为可能的访问者副作用(如发布通知或KVO),但这是一个有争议的位置,Apple在他们自己的代码中不一致。无论如何,这是一个很好的做法,可以删掉你的指针。它肯定不会造成问题,并且在-dealloc
中删除指针的习惯将为您节省将来的重大错误。
在这个特定的情况下,它可能不是必要的,但是你提出什么样的问题?
假设它是一个合成访问器,在dealloc中没有必要去做。早些时候,如果你不想再与对象交谈,你可能会把它忘掉。不过,我看不出会有什么问题。
如果它不是一个合成存取器,那么setter也可能以某种方式影响反转关系,在这种情况下,可能需要将其设置为零,以便告知foo
您不会再处于其他位置。
assign属性不必在-dealloc中将其ivar设置为nil。
在-dealloc中设置伊娃为零无害。使用公共访问器将属性设置为dealloc中的nil([self setFoo:nil]或self.foo = nil)可能会产生不必要的副作用。
我只是想知道是否需要,所以我可以避免未知的错误,很多头痛。我困惑的一件事是如何分配变量。我认为,当我将self.foo分配给nil时,是否将分配给它的另一个假设变量设置为nil?我很难解释我的问题,所以请让我知道如果你明白:) – Meroon 2009-07-22 03:50:20