Creating Objects & Setting iVars in a Loop?
NSArray *planetArray = [NSArray arrayWithObjects:@"Earth",
@"Jupiter",
@"Saturn",
@"Neptune",
@"Pluto", nil];
NSMutableArray *objectArray = [[NSMutableArray alloc] init];
for(NSString *eachPlanet in planetArray) {
Planet *newPlanet = [[Planet alloc] init];
[newPlanet setValue:eachPlanet forKey:@"name"];
[newPlanet setValue:@"TEST" forKey:@"type"];
[newPlanet setValue:[NSNumber numberWithInt:1234] forKey:@"mass"];
[objectArray addObject:newPlanet];
[newPlanet release];
}
for(Planet *displayEachPlanet in objectArray) {
NSLog(@"DATA: %@", displayEachPlanet);
}
[objectArray release];
I am curious if this is the best way to create an obj开发者_开发知识库ect and set an iVar for each item in an array. Basically I am:
- Creating a Planet object
- Setting the iVar (from the NSString array)
- Adding the Planet object to an array.
Releasing the Planet object
Printing my Planet objects
Releasing the array
NB: I am just testing, this is not for anything, I was just curious ...
cheers Gary
Can't see anything drastically wrong about doing it that way. One suggestion would be to have an extended initialiser for your planet class, along the lines of:
-(Planet*) initWithName:(NSString*)name andType:(NSString*)type withMass:(int)mass;
And then create the planet with:
Planet *newPlanet = [[Planet alloc] initWithName:eachPlanet andType:@"Test" withMass:42];
Looks good to me. If all you are doing with the objects is printing something from them, you could probably do it in one loop with less initializing and such, but if thats just a test..it looks fine.
精彩评论