2010-11-03 47 views
1

嗨,我正面臨Linux/GNUstep的一個問題。我的NSMutableArray似乎沒有保留任何添加的對象。他們不應該嗎?例如:不應該NSMutableArray保留添加的對象?

NSString * str = @"test"; 
NSMutableArray * arr = [[NSMutableArray alloc] init]; 
NSLog(@"before add retainCount: %d", [str retainCount]); 
[arr addObject: str]; 
NSLog(@"after add retainCount: %d", [str retainCount]); 

輸出:

before add retainCount: 1 
after add retainCount: 1 

回答

4

(第一:你應該永遠依靠-retainCount

引擎蓋下,常量字符串(定義爲字符串,例如,@"foo")是特殊因爲-retain-release實際上並沒有做任何事情;作爲優化,他們總是保留1。

如果你做這樣的事情:

NSString * str = [NSString stringWithFormat:@"%@%@", @"foo", @"bar"]; 

您可能會看到你所期望的。

+0

謝謝。我試着用[NSString initWithString:@「test」]並工作。 – Dimitris 2010-11-03 14:16:11