2010-03-13 246 views

回答

0

mutableCopy總是遞增對象的retainCount。所以,如果你使用retain,copy或者mutableCopy你必須在dealloc方法中釋放。

如果要返回該對象,你必須使用自動釋放,這樣的:

[[[NSString alloc] initWithString:@"Test"] autorelease]; 

的自動釋放池,將釋放你的對象,也沒有必要在dealloc方法來釋放。

希望能幫到你。

+1

我明白,但如果我返回所說的對象呢? – skylerl 2010-03-13 23:51:38

+0

對不起,想念你的問題中的回報部分。 – reinaldoluckman 2010-03-14 00:36:02

10

你的方法應該遵循標準的內存管理程序。如果你的方法返回一個對象,但不包含「alloc」,「new」,「copy」,「create」或「retain」等字,那麼該對象應該被自動釋放。

如果它包含其中一個單詞,那麼它應該返回一個+1保留計數。

例如:

//return an autoreleased object, since there's no copy, create, retain, alloc, or new 
- (id) doSomethingWithFoo:(id)foo { 
    id fooCopy = [foo copy]; 
    [fooCopy doTheNeedful]; 
    return [fooCopy autorelease]; 
} 

//return a +1 object, since there's a copy in the name 
- (id) copySomethingWithFoo:(id)foo { 
    id fooCopy = [foo copy]; 
    [fooCopy doTheNeedful]; 
    return fooCopy; 
} 
相關問題