Mam mały test narzędzia Foundation (Objective-C), że gram z i mam kilka pytań ...Dodawanie obiektów ciąg do NSMutableArray?
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int planetLoop;
NSString *tempString;
NSMutableArray *planetArray = [[NSMutableArray alloc] init];
NSLog(@"STRING ARRAY ... Start");
for(planetLoop=0; planetLoop<10; planetLoop++) {
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
NSLog(@"Planet_%03d", planetLoop+1);
[planetArray addObject:tempString];
}
[planetArray release];
[pool drain];
return 0;
}
Po pierwsze, zazwyczaj mam zwolnić obiektu po dodaniu go do tablicy, ale Czy mam rację, sądząc, że to, co mam obecnie, jest słuszne, ponieważ "tempString" jest dosłownym ciągiem znaków i jako taki nie musi być przydzielany lub uwalniany?
Po drugie, po uruchomieniu tego (przed wykonaniem) otrzymuję następujący komunikat "nie można odczytać nieznanego polecenia obciążenia 0x80000022", jeśli jest to problem z moim kodem? od wyszukiwania w google wygląda na to, że może to być błąd w XCode 3.1.2, czy ktoś ma jakieś pomysły?
Wreszcie coś robię źle, chodzi o to, aby wypełnić tablicę z 10 znaków "Planet_001" aż do "Planet_010"
EDIT: Ah, widzę, to jest to z powodu "= [NSString" bit tj
// Autoreleased object
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
// String literal
tempString = @"Planet_";
wielkie dzięki, bardzo cenione -gary-
On uwalnia pulę: [basen spustowy] –
Dzięki chłopaki, widzę, co się dzieje teraz, mała edycja powyżej, aby wyjaśnić ... – fuzzygoat
@ Chris masz rację. Nie zdawałem sobie sprawy, że 'drain' ma' release'. –