2010-03-13 222 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; 
} 
相关问题