0
plistから初期化されたNSStringを返そうとしています。目的C - NSString - メモリの基礎
私のリリースラインをコメントアウトすると、このコードが機能します。しかし、私はもはやそれらを必要としないので、メモリからこれらのオブジェクトを解放したいと思います。
私は 'initWithString'が目標文字列の内容を新しい文字列にコピーすると思っていました。つまり、安全にNSMutableArrayを解放することができました。しかし、そうではありません。何故なの?
+ (NSString*) genImage {
NSString *path = [[NSBundle mainBundle] pathForResource:
@"Images" ofType:@"plist"];
NSMutableArray *arrayOfImages = [[NSMutableArray alloc] initWithContentsOfFile:path];
NSLog(@"%d", [arrayOfImages count]);
int indexToLoad = 0;
NSString *res = [[NSString alloc] initWithString:[arrayOfImages objectAtIndex:indexToLoad] ];
[arrayOfImages release];
[path release];
return res;
}
に変更することができます。私は '* path'に 'alloc'を呼び出さなかったので、私はそれを解放してはいけません。 - はい? –
@andy boot:基本的には。ドキュメントに別途記載されていない限り(非常に稀です)、名前に 'alloc'、' new'、または 'copy'を含まないメソッドがオートレリースされたオブジェクトを返すと仮定できます。 – mipadi
私はあなたが*保持*オブジェクト(オートレリースされていない)を意味すると思います! – ipmcc