In meinem Code erstelle ich 5 Sätze von Objekten und 5 NSArrays, die diese Objekte enthalten. Am Ende meiner Methode werden zwei der Arrays ordnungsgemäß freigegeben, aber die anderen drei führen zum Absturz meiner Anwendung.NSArray Release Absturz
Erstellen
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];
Releasing
[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
Jeder weiß, wie richtig die Arrays enthalten NSNumbers freizugeben?
Beachten Sie, dass retainCount nie 0. Einer der vielen Gründe, warum Sie nie diese Methode zurückkehren können anrufen sollte. – bbum
Eigentlich stürzt die App ab, wenn der Retain-Count 0 ist und die Methode aufgerufen wird, also hilft es beim Debuggen, die Methode aufzurufen. –