有二傳手的例子很多,我們應該怎麼做,例如:不必要地釋放
- (void)setFoo:(NSString *)newFoo
{
if (foo != newFoo)
{
[foo release];//??
foo = [newFoo retain];
}
}
我的理解是,我們需要釋放上一個值,然後分配新的有保留,這是怎麼文檔說我們要做,但我不明白我們應該發佈什麼,如果分配foo = [newFoo retain];會使foo成爲newFoo當前保留計數器的新值,如果甚至foo的保留計數器在5之前,它就會變成newFoo的+1,或者我有些想法和理解不正確。爲什麼我們不能這樣做:
- (void)setFoo:(NSString *)newFoo
{
if (foo != newFoo)
{
foo = [newFoo retain];
}
}
哦,10倍,我明白了。事實上,我們需要釋放的不是var,而是內存單元 – 2012-02-20 19:35:03