1

こんにちは、Linux / GNUstep の問題に直面しています。私の 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

1 に答える 1

4

(最初: に頼るべきではありません-retainCount。)

内部的には、定数文字列 (たとえば として定義された文字列@"foo") はその点で特別で-retainあり、-release実際には何もしません。それらは、最適化として保持カウント 1 で常に存在します。

次のようなことをすると:

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

あなたはあなたが期待するものを見るかもしれません。

于 2010-11-03T12:44:58.767 に答える