Objective C-NSString-メモリの基本

objective-c
Objective C-NSString-メモリの基本

plistから初期化された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;

}

  0  0


ベストアンサー

-[NSBundle pathForResource:ofType:]( `path`変数)の戻り値を保持しないので、それをリリースする必要はありません(そうするとクラッシュする可能性が高いです)。 ただし、_do_を保持するため、 `res`を自動解放する必要があります。 最後の行を次のように変更できます

return [res autorelease];

2


タイトルとURLをコピーしました