私のコードでは、私は5セットのオブジェクトとそれらのオブジェクトを含む5 NSArraysを作成しています。私の方法の終わりに、2つの配列が適切に解放されますが、他の3つはアプリケーションをクラッシュさせます。NSArrayリリースクラッシュ
[name0 release];
[nameArray release]; //Releases properly
[image0 release];
[imageArray release]; //Releases properly
[price0 release];
NSLog(@"%i",[priceArray retainCount]); //Returns 1
[priceArray release]; //Source of the crash
[round0 release];
[roundArray release]; //Also crashes
[priceRound0 release];
[priceRoundArray release]; //Also Crashes
誰が正しくNSNumbersを含む配列を解放する方法を知って解放
UIImageView *image0 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TankAxe.png"]];
NSArray *imageArray = [[NSArray alloc] initWithObjects:image0, nil];
NSString *name0 = [NSString stringWithString:@"Pistol"];
NSArray *nameArray = [[NSArray alloc] initWithObjects:name0, nil];
NSNumber *price0 = [NSNumber numberWithInt:100];
NSArray *priceArray = [[NSArray alloc] initWithObjects:price0, nil];
NSNumber *round0 = [NSNumber numberWithInt:0];
NSArray *roundArray = [[NSArray alloc] initWithObjects:round0, nil];
NSNumber *priceRound0 = [NSNumber numberWithInt:0];
NSArray *priceRoundArray = [[NSArray alloc] initWithObjects:priceRound0, nil];
を作成しますか?
retainCountは、あなたがそのメソッドを呼び出すことはありません多くの理由の0つを返すことはできませんので注意してください。 – bbum
実際には、保持カウントが0でメソッドが呼び出されると、アプリケーションがクラッシュし、メソッドを呼び出すためのデバッグに役立ちます。 –