我應該一般總是保留還是複製從函數返回的字符串值?我是否應該總是複製或保留從函數返回的字符串
請看下面的例子:如果我想去上和功能使用的myString沒有它得到釋放我怎麼處理呢
- (NSString*) getString:
{
return [[NSString alloc] autorelease];
}
- (NSString*) getStringAlloc: // Not sure if this convention is correct
{
return [NSString alloc];
}
...
在調用方法
NSString* myString = [self getString];
。第二種方法的名稱也是使用正確的約定。
如果我知道返回的字符串是自動釋放(來自方法名稱)並且沒有被更改,那麼推測可能是保留或複製的唯一原因是有人在將來不會更改代碼。如果我不介意價值發生變化,那麼我估計不需要保留或複製。
假設我沒有使用ARC。
也考慮使用ARC。 – calimarkus 2012-03-05 16:40:18
這裏有一篇關於ARC特性jaydee3所指的好文章:http://longweekendmobile.com/2011/09/07/objc-automatic-reference-counting-in-xcode-explained/ – allaire 2012-03-05 16:42:16
更新後的問題。 – zode64 2012-03-05 16:42:16